Jump to content

Jak začít s pytestem a psát smysluplné testy

From Babylon SIGNALIS Wiki
Revision as of 18:24, 21 August 2026 by AimeeEdler06 (talk | contribs) (Created page with "Dalším častým problémem je odhadování „ve vzduchu" bez znalosti existujícího kódu. Pokud neznáte architekturu, použité knihovny nebo kvalitu testů, je váš odhad jen tipování. Před odhadem si projděte relevantní části kódu, podívejte se na podobné úkoly z minulosti a zjistěte, jak dlouho reálně trvaly. Historická data z vašeho týmu jsou nejcennějším zdrojem – pokud je nemáte, začněte si je zaznamenávat.<br><br>Praktickým tipem...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Dalším častým problémem je odhadování „ve vzduchu" bez znalosti existujícího kódu. Pokud neznáte architekturu, použité knihovny nebo kvalitu testů, je váš odhad jen tipování. Před odhadem si projděte relevantní části kódu, podívejte se na podobné úkoly z minulosti a zjistěte, jak dlouho reálně trvaly. Historická data z vašeho týmu jsou nejcennějším zdrojem – pokud je nemáte, začněte si je zaznamenávat.

Praktickým tipem je používat příkaz pytest -k pro filtrování testů podle názvu nebo -x pro zastavení po prvním selhání. To šetří čas při ladění. Pro kontrolu pokrytí kódu můžete použít doplněk pytest-cov, ale pozor – vysoké pokrytí neznamená, že jsou testy kvalitní. Důležité je testovat hlavní scénáře a okrajové případy, ne jen procházet řádky kódu. Snažte se psát testy, které skutečně odhalí chyby, ne takové, které jen potvrzují, že kód funguje.

Při práci s více soubory oceníte funkci Move, která přesune třídu nebo funkci do jiného souboru a zároveň aktualizuje všechny importy. Tato operace je užitečná zejména při organizování projektů do modulů. Pozor si dejte na cyklické závislosti – přesun může někdy vytvořit nechtěné propojení mezi balíčky. Před potvrzením akce si proto prohlédněte náhled změn, který IDE nabízí.

Nezapomeňte také na podporu uložených procedur a funkcí. Některá IDE umí zobrazit kód procedur, zvýraznit chyby a umožnit jejich spuštění s parametrem. To ušetří čas při ladění. Ale pozor – některé nástroje zobrazují procedury jen jako text a neumožňují jejich krokování. Pokud toto potřebujete, testujte přímo na vaší databázi, ne na demo serveru. Další praktickou funkcí je porovnání schémat – ať už mezi dvěma databázemi, nebo verzemi. Bez tohoto nástroje budete muset ručně psát skripty a porovnávat je, což je zbytečná práce.

Při výběru integrovaného vývojového prostředí (IDE) se často soustředíte na jazyky, které plánujete používat, a na vzhled prostředí. To je ale jen polovina úspěchu. Pokud pracujete s databázemi, je podpora SQL nástrojů klíčová. Než se rozhodnete, zkuste si odpovědět na otázku, jaké databázové systémy používáte – MySQL, PostgreSQL, SQL Server, nebo třeba Oracle. Každé IDE má jinou úroveň integrace a ne vždy to, co vypadá dobře v prezentaci, funguje bez problémů v praxi.

Nejčastější chyby při odhadování času Jednou z nejrozšířenějších chyb je ignorování režie – schůzky, e-maily, code review, testování, nasazení nebo ladění. Zkušený vývojář často stráví jen polovinu pracovní doby samotným psaním kódu. Pokud tuto režii nezapočítáte, bude váš odhad systematicky nízký. Doporučuji přidat k čistému odhadu rezervu alespoň 20–30 %, a to nejen na režii, ale i na chyby, které se objeví až během integrace.

Pro jednoduché služby, kde klient potřebuje jasně definované zdroje, je REST obvykle lepší volba. Pokud máte veřejné API, které má být snadno pochopitelné a stabilní, REST poskytuje přehlednou strukturu s explicitními koncovými body. Typický příklad: e-shop, kde potřebujete získat produkt, uživatele nebo objednávku. Každý zdroj má vlastní URL a HTTP metody (GET, POST, PUT, DELETE) dávají jasně najevo, co se děje. Méně zkušení vývojáři se v RESTu rychle zorientují, protože vše je vidět na první pohled.

Nakonec si osvojte psaní testů jako běžnou součást vývoje. Když přidáváte novou funkci, napište testy dřív, než ji implementujete – tato technika se nazývá testování řízené vývojem (TDD). Pomůže vám to lépe promyslet návrh a vyhnout se zbytečným chybám. pytest je nástroj, který vám v tom pomůže, ale klíčová je vaše disciplína a pochopení, co testujete a proč.

Pravidelně porovnávejte odhady se skutečností. Po dokončení úkolu si zapište, kolik času reálně zabral, a proč se lišil od odhadu. Po čase získáte kalibraci, díky které budou vaše odhady stále přesnější. Nepodléhejte iluzi, že odhadování je exaktní věda – je to dovednost, kterou lze trénovat. Důležité je být konzistentní, sledovat metriky a nebát se přiznat nejistotu.

Častou pastí je používání globálního stavu. Pokud testy závisí na pořadí spuštění nebo na souborech, které se mění, jsou křehké. Pytest nabízí tzv. fixtures – funkce označené @pytest.fixture, které připraví data nebo objekty pro test. Fixtures se automaticky předávají jako argumenty testovací funkci. Můžete je použít pro vytvoření dočasného souboru, připojení k databázi nebo nastavení konfigurace. Díky tomu je každý test izolovaný a nezávislý na ostatních. Nezapomínejte také na správu zdrojů – fixtures by měly zajistit i úklid po sobě.

Základní struktura projektu je jednoduchá: testy umístěte do adresáře tests a pojmenujte soubory test_nazev.py. Spuštění probíhá příkazem pytest v kořenovém adresáři. Pytest automaticky sbírá soubory začínající na test_ a funkce v nich. Pro první test stačí napsat funkci s assert, která porovná očekávaný výsledek se skutečným. Pokud test selže, pytest vypíše podrobné informace o tom, co se neshoduje, takže chybu rychle najdete.