Christianpedia

První kroky s API: praktický průvodce pro začátečníky

Časté chyby, které vás připraví o smysl testů První typická chyba je testování implementace místo chování. Když testujete, že funkce volá jinou funkci s určitými argumenty, svazujete si ruce pro budoucí refaktoring. Test by měl selhat pouze tehdy, když se změní výsledek, ne když se změní vnitřní struktura kódu. Druhá častá chyba je psaní testů, které projdou i bez testované funkce. Typicky jde o testy, které kontrolují jen to, že funkce nevyhodí výjimku, ale nekontrolují návratovou hodnotu. Takový test je k ničemu.

Při psaní prvního testu se také vyplatí myslet na okrajové případy. Prázdný vstup, nulová hodnota, extrémně velké číslo nebo prázdný řetězec. Tyto případy často odhalí chyby, které běžné použití neukáže. Začněte s jedním šťastným scénářem, ale hned poté přidejte test pro neplatný vstup. Funkce by měla selhat elegantně, ne spadnout s nesrozumitelnou výjimkou. Pokud testujete funkci, která dělí, přidejte test pro dělení nulou. Pokud parsujete text, otestujte prázdný řetězec.

Při testování IDE si všímejte, jak rychle se otevře a jak reaguje na psaní. Některá prostředí jsou náročná na paměť, což oceníte na výkonném počítači, ale na starším notebooku vás to bude brzdit. Typická chyba: stáhnete si nejpopulárnější nástroj, ale po pár týdnech zjistíte, že vám nevyhovuje jeho vzhled nebo náročnost konfigurace. Místo toho vyzkoušejte tři nebo čtyři různé možnosti a věnujte každé alespoň jeden den. Pracujte na reálném projektu, ne jen na ukázkové úloze, protože teprve tak odhalíte, co vám nástroj usnadňuje a co naopak komplikuje.

Pozor na rozdíl mezi silným a slabým copyleftem. Silný copyleft (GPL) se vztahuje i na díla, která váš kód pouze propojují. Slabý copyleft (LGPL) umožňuje použití v proprietárním softwaru za předpokladu, že úpravy samotné knihovny zůstanou volné. Tento rozdíl je zásadní zejména pro vývojáře knihoven a frameworků.

Třetí problém nastává, když test závisí na pořadí provedení nebo na sdíleném stavu. Unit testy musí být izolované a spustitelné v libovolném pořadí. Pokud váš test potřebuje databázi, soubor nebo síť, není to unit test, ale integrační test. Pro začátek se těmto závislostem vyhněte úplně. Pokud testovaná funkce používá čas, náhodu nebo externí službu, naučte se tyto závislosti předávat jako parametry. Tím získáte kontrolu nad vstupem a test bude deterministický.

Testování je nedílnou součástí vývoje softwaru, a pokud píšete v Pythonu, pytest je jedním z nejpoužívanějších nástrojů. Jeho hlavní výhoda spočívá v jednoduché syntaxi – testy píšete jako obyčejné funkce, bez nutnosti tříd nebo speciálních dekorátorů. Díky tomu se snadno učí a dobře se čte. V tomto článku si ukážeme, jak začít, na co si dát pozor a jak se vyhnout častým chybám.

Při psaní testů se vyvarujte častých chyb. První je testování více věcí v jedné funkci – pokud test selže, nevíte přesně, která část je rozbitá. Rozdělte test na menší celky. Druhou častou chybou je spoléhání se na pořadí testů nebo na sdílený stav mezi testy. Testy by měly být izolované, aby je bylo možné spouštět v libovolném pořadí. Třetí chybou je ignorování výjimek – pokud funkce očekává vyhození výjimky, použijte pytest.raises a ověřte, že k tomu skutečně dojde. Bez toho test neodhalí chybu.

Nakonec nezapomeňte licenci správně aplikovat – obvykle vložením textu licence do repozitáře a komentáře do hlaviček zdrojových souborů. Aktualizujte ji, pokud se změní podmínky projektu. A vždy si ověřte, zda licence, kterou jste zvolili, je kompatibilní s knihovnami, které sám používáte. Dobrý výběr na začátku ušetří mnoho nepříjemností později.

Nejprve je potřeba pytest nainstalovat. To provedete příkazem pip install pytest v terminálu. Po instalaci vytvořte soubor s názvem test_example.py. Název musí začínat nebo končit slovem test, aby pytest soubor automaticky našel. V tomto souboru definujte funkce, jejichž názvy také začínají test_. Uvnitř funkcí použijte běžné assert pro ověření výsledku. Pytest pak spustíte příkazem pytest v adresáři s testem.

Jak na první požadavek a běžné chyby Pro první pokus zkuste poslat jednoduchý GET požadavek. V jazyce Python to zvládnete s knihovnou requests, v JavaScriptu pak s fetch. Například v Pythonu stačí napsat příkaz, který odešle požadavek a vytiskne odpověď. Důležité je zpracovat odpověď jako JSON – většinou pomocí metody .json(). Ujistěte se, že máte přidělený API klíč, pokud je potřeba, a že ho posíláte v hlavičce, ne v adrese. Častou chybou je zapomenout na limit počtu požadavků – mnoho služeb má omezení, takže pokud testujete ve smyčce, snadno překročíte povolený počet a dostanete blokaci.

Discuss this page