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ý.
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:
Jan ZatloukalTester 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.