4 návyky, které rozhodují o čitelnosti testů v pytestu

Z Mazovia
Wersja z dnia 04:10, 12 paź 2026 autorstwa Essie97O555 (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)


Nakonec myslete na to, že náhrady musí být viditelné v kódu. Skryté přepínače nebo magické proměnné prostředí, které mění chování podle toho, kde se test spustí, vedou k situaci, kdy nikdo neví, co se vlastně testuje. Pojmenujte náhrady jasně, dejte je do testovací složky a v produkčním kódu je nepoužívejte. Testy s datovými závislostmi pak poběží rychle, opakovatelně a bez překvapení.

Konflikty, které se neprojeví hned Nejčastější chyba je přiřadit virtuálnímu stroji příliš mnoho paměti. Windows si dynamicky alokují RAM a pokud hostitelskému systému zbývá jen zlomek, začne odkládat na disk. If you have any inquiries relating to the place and how to use rekonstrukce koupelny krok za Krokem, you can get in touch with us at our site. To se projeví jako dlouhé pauzy při přepínání oken, i když virtuální stroj sám nic nedělá. Praktické pravidlo: součet paměti všech běžících strojů by neměl přesáhnout polovinu fyzické RAM. Stejně tak počet virtuálních procesorů — přiřadit jeden stroj osm jader na čtyřjádrovém procesoru znamená, že se plánovač zbytečně přepíná a výkon klesá.

Shrnutí: odhad nebude přesný, dokud neoddělíte implementaci, revizi a úpravy. Počítejte s tím, že revize není zdarma a že úpravy nejsou jen formalita. Sledujte skutečná data a upravujte odhady podle nich. Bez toho zůstane plánování jen hádání.

Testy s náhradami spouštějte společně s testy jednotek i integračními testy. Pomáhá oddělit vrstvy: testy jednotek používají stuby a běží rychle, integrační testy mohou použít fake službu běžící lokálně. Nikdy ale netvrďte, že testy s náhradami ověřují skutečnou integraci. Skutečné chování externí služby se může lišit v detailech, jako je formát data, kódování nebo chybové stavy. Proto si ponechte alespoň malou sadu testů, které se proti reálné službě pustí ručně nebo ve zvláštním prostředí.

Testování aplikace, která závisí na datech z externích služeb, je často nepříjemné: sítě vypadávají, API mají limity, odpovědi se mění a testy jsou pomalé. Řešení není obcházet závislosti, ale nahradit je něčím, co máte plně pod kontrolou. Základem je izolovat kód, který s externí službou komunikuje, za rozhraní. V produkci rekonstrukce koupelny krok za krokem něj dosadíte skutečného klienta, v testech jeho náhradu. Tím se testy zrychlí, zprovozní a přestanou být závislé na cizím prostředí.

U složitějších závislostí se vyplatí simulovat i chování v čase. Pokud aplikace čeká na opakované volání, zpracovává stránkování nebo řeší timeouty, nestačí jedna statická odpověď. Připravte náhradu, která umí vrátit postupně několik odpovědí nebo vyhodit chybu po určitém počtu volání. Pozor na předpoklad, že externí služba odpovídá vždy stejně. Právě neočekávané pořadí, chybějící pole nebo prázdné kolekce odhalí v testech nejvíc chyb.
Testy v Pythonu se často píšou jako nutné zlo. Přitom stačí málo a jejich spouštění se stane součástí běžné práce. Pytest je knihovna, která nevyžaduje žádné dědění ze speciálních tříd ani složité konfigurace. Nainstaluje se přes pip a testovací soubory se pojmenovávají tak, aby je nástroj sám rozpoznal: soubor začíná na test_ nebo končí na _test.py a funkce uvnitř rekonstrukce koupelny krok za krokemčínají na test_. To je celé minimum pro první spuštění.

Druhý problém je síť. Režim přemostění (bridged) dává stroji vlastní adresu v síti, ale pokud hostitel používá Wi-Fi s izolací klientů, stroj se nedostane ven. Režim NAT zase skryje stroj za hostitele a některé aplikace vyžadující příchozí spojení nefungují. Nejspolehlivější je nejprve otestovat připojení příkazem pro ověření dostupnosti a teprve pak měnit nastavení. U virtuálních sítí také platí, rekonstrukce bytu že se po aktualizaci ovladačů mohou přejmenovat a konfigurace se rozbije.

Kdy použít stub, fake a kdy mock Stub vrátí pevnou odpověď a hodí se tam, kde ověřujete zpracování dat. Fake se chová jako zjednodušená verze služby — například drží data v paměti a umí je filtrovat. Mock navíc kontroluje, zda aplikace službu zavolala správně, s jakými parametry a kolikrát. Typická chyba je používat mock na všechno: testy pak testují implementaci, ne chování. Pokud jde jen o to, že aplikace dostane data a něco s nimi udělá, stub nebo fake stačí a jsou srozumitelnější.

Ukládání je třetí místo, kde se chyby hromadí. Dynamicky rostoucí diskový soubor se při každém zápisu zvětšuje a fragmentuje. Po měsících provozu zabírá víc místa, než kolik dat skutečně obsahuje, a zápis se zpomaluje. Řešení je buď pravidelná komprimace, nebo předalokovaný pevný disk. Pozor ale na snapshoty — každý další se řetězí a při jejich velkém počtu se čtení disku výrazně zpomalí. Před sloučením snapshotů je nutné mít dostatek volného místa, jinak operace selže a stroj zůstane v nekonzistentním stavu.