Testujeme software Testujeme software
  • Úvod
  • Blog
  • Nástroje
  • Slovníček
Testujeme software Testujeme software
Testujeme software Testujeme software
  • Úvod
  • Blog
  • Nástroje
  • Slovníček
  • Blog

Tabulkový diff pomocí Pythonu

  • 29. 6. 2023
  • Jan Zatloukal
Total
0
Shares
0
0
0

Při testování složitějších systémů často docházím do stavu, kdy potřebuji porovnávat hodnoty před a po provedení určité operace. Současně si také chci vypsat kompletní stav systému a ověřit, že provedená operace neovlivnila i něco dalšího.

Moje představa byla nechat si vypsat všechny hodnoty parametrů do přehledné tabulky a barevně označit ty, u kterých došlo ke změně.

Pro účely tohoto článku jsem potřeboval nějakou ukázkovou aplikaci, která by se podobala mému použití při testování aplikace pro elektronový mikroskop. Napadlo mě API pro ovládání digitálního fotoaparátu — je to sice něco jiného než mikroskop, ale nějaké čočky se zde najdou také. A protože jsem líný, nechal jsem ChatGPT, ať mi takové API vytvoří.

Klasický výpis hodnot

Jednoduché vypsání hodnot parametrů vypadá následovně. Při velkém počtu parametrů může být ale takový výpis nepřehledný.

Kompletní ukázkový skript najdete zde: test1.py

from dslr import DSLRCamera # dummy app
camera1 = DSLRCamera("Canon")
rint('Before:')
print(f'camera1.iso: {camera1.iso}')
...
camera1.iso = 700
...
print('After:')
print(f'camera1.iso: {camera1.iso}')

Tabulkový výpis

Pro zlepšení přehlednosti můžeme data vypsat formou ASCII tabulky. K tomu použijeme Python modul PrettyTable. Jeho použití je jednoduché:

from prettytable import PrettyTable

table = PrettyTable()
table.field_names = ["Column A", "Column B"]
table.add_row(["Value A1", "Value B1"])
table.add_row(["Value A2", "Value B2"])

print(table)

Už tedy umíme vypsat tabulku, a výsledek je hned o něco přehlednější: test2.py

Porovnávání hodnot

Teď už zbývá jen porovnat obě tabulky a zvýraznit hodnoty, u kterých došlo ke změně. Protože tabulka PrettyTable je vlastně dvourozměrné pole, stačí projít jednotlivé buňky první tabulky a zjistit, zda se jejich hodnota liší od hodnoty odpovídající pozici v druhé tabulce.

for x, row in enumerate(data_before):
    for y, cell in enumerate(row):
        if data_before[x][y] != data_after[x][y]:
            data_after[x][y] = ...

Pro zvýraznění použijeme modul Colorama, který nám do výstupu přidá barvičky:

print(Fore.GREEN + 'this is green text')

Výsledkem je přehledná tabulka změn: test3.py

Všechny použité skripty a funkci pro porovnávání tabulek tables_diff() najdete na našem Githubu.

Total
0
Shares
Sdílet 0
Tweetnout 0
Sdílet 0
Související témata
  • Python
  • Reportování
  • Zpracování dat
Jan Zatloukal

Tester a vývojář se zálibou v automatizaci a zlepšování procesu vývoje. Aktuálně pracuji na projektu automatizace elektronových mikroskopů v Pythonu.

Předchozí článek
  • Blog

Software testing očima nováčka, díl II.

  • 15. 6. 2023
  • Vojtěch Camfrla
Zobrazit článek
Další článek
  • Blog

Automatizované testování webových aplikací s Robot Frameworkem a RPA.Browser 

  • 27. 7. 2023
  • Jan Zatloukal
Zobrazit článek
Mohlo by se vám také líbit
Zobrazit článek
  • Blog

Identifikace UI prvků pro automatické testování

  • Jan Zatloukal
  • 21. 9. 2023
Zobrazit článek
  • Blog

Obsidian – automatizace nad poznámkami 

  • Jan Zatloukal
  • 7. 9. 2023
Zobrazit článek
  • Blog

Organizace souborů a složek při práci s Robot Frameworkem

  • Petr Nagy
  • 10. 8. 2023
Zobrazit článek
  • Blog

Automatizované testování webových aplikací s Robot Frameworkem a RPA.Browser 

  • Jan Zatloukal
  • 27. 7. 2023
Zobrazit článek
  • Blog

Software testing očima nováčka, díl II.

  • Vojtěch Camfrla
  • 15. 6. 2023
Zobrazit článek
  • Blog

Automatické spouštění testů během buildu v GitLabu

  • Aleš Tichý
  • 1. 6. 2023
Zobrazit článek
  • Blog

Automatizované testování Windows aplikací s Robot Frameworkem a RPA.Windows 

  • Jan Zatloukal
  • 18. 5. 2023
Zobrazit článek
  • Blog

Perfomance monitoring pomocí Telegrafu a Grafany (1. díl)

  • Radek Vavřín
  • 4. 5. 2023

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Doporučené příspěvky
  • 1
    Identifikace UI prvků pro automatické testování
    • 21. 9. 2023
  • 2
    Obsidian – automatizace nad poznámkami 
    • 7. 9. 2023
  • 3
    Organizace souborů a složek při práci s Robot Frameworkem
    • 10. 8. 2023
  • 4
    Automatizované testování webových aplikací s Robot Frameworkem a RPA.Browser 
    • 27. 7. 2023
  • 5
    Tabulkový diff pomocí Pythonu
    • 29. 6. 2023
Poslední příspěvky
  • Software testing očima nováčka, díl II.
    • 15. 6. 2023
  • Automatické spouštění testů během buildu v GitLabu
    • 1. 6. 2023
  • Automatizované testování Windows aplikací s Robot Frameworkem a RPA.Windows 
    • 18. 5. 2023
Rubriky
  • Blog (26)
Testujeme software Testujeme software
  • Edhouse.cz
  • Vyšíváme software
  • Zásady cookies (EU)
Testujeme software – vše o testování software | Všechna práva vyhrazena © 2022

Zadejte klíčové slovo a stiskněte Enter.

Spravovat Souhlas s cookies
Abychom poskytli co nejlepší služby, používáme k ukládání a/nebo přístupu k informacím o zařízení, technologie jako jsou soubory cookies. Souhlas s těmito technologiemi nám umožní zpracovávat údaje, jako je chování při procházení nebo jedinečná ID na tomto webu. Nesouhlas nebo odvolání souhlasu může nepříznivě ovlivnit určité vlastnosti a funkce.
Funkční Vždy aktivní
Technické uložení nebo přístup je nezbytně nutný pro legitimní účel umožnění použití konkrétní služby, kterou si odběratel nebo uživatel výslovně vyžádal, nebo pouze za účelem provedení přenosu sdělení prostřednictvím sítě elektronických komunikací.
Předvolby
Technické uložení nebo přístup je nezbytný pro legitimní účel ukládání preferencí, které nejsou požadovány odběratelem nebo uživatelem.
Statistické
Technické uložení nebo přístup, který se používá výhradně pro statistické účely. Technické uložení nebo přístup, který se používá výhradně pro anonymní statistické účely. Bez předvolání, dobrovolného plnění ze strany vašeho Poskytovatele internetových služeb nebo dalších záznamů od třetí strany nelze informace, uložené nebo získané pouze pro tento účel, obvykle použít k vaší identifikaci.
Marketingové
Technické uložení nebo přístup je nutný k vytvoření uživatelských profilů za účelem zasílání reklamy nebo sledování uživatele na webových stránkách nebo několika webových stránkách pro podobné marketingové účely.
Spravovat možnosti Spravovat služby Spravovat dodavatele Přečtěte si více o těchto účelech
Zobrazit předvolby
{title} {title} {title}