Automatizace v Pythonu: praktický průvodce pro začátečníky

Aus Rettungsdienst-Wiki
Zur Navigation springen Zur Suche springen

Začněte u jednotkových testů. Ty by měly pokrývat všechny klíčové výpočty, validace a rozhodovací logiku. Píšete je ve stejném jazyce jako aplikaci, nejlépe přímo u třídy nebo funkce. Snažte se, aby každý test ověřoval jednu konkrétní věc a nezávisel na databázi, souborech ani síti. Typická chyba je testovat přes HTTP endpoint, když stačí zavolat metodu přímo. Tím testy zpomalíte a znejistíte – pak vám stačí, že se změní jeden JSON klíč, a spadne vám deset testů, které přitom ověřují úplně jinou logiku.

Začněte u pojmenování. Vyhněte se zkratkám jako d, tmp nebo data. Místo toho používejte popisné názvy, které vyjadřují účel: userList, processedOrder, fetchUserProfile. Důležité je také rozlišovat funkce a proměnné: sloveso u funkcí (getUser, sendEmail) a podstatné jméno u hodnot (user, email). Vyhnete se tak nejednoznačnosti a ulehčíte práci ostatním vývojářům.

Proč méně end-to-end testů znamená víc jistoty Na vrcholu pyramidy jsou end-to-end testy, které projíždějí celou aplikaci jako uživatel. Tyto testy jsou pomalé, drahé na údržbu a náchylné na rozbití kvůli maličkostem (např. jiná barva tlačítka). Proto jich pište minimum – jen pro kritické cesty, jako je registrace, nákup nebo přihlášení. Před každým spuštěním se ujistěte, že testovací prostředí je stabilní a data jsou předvídatelná. Vyhněte se používání testovacích čísel karet nebo náhodných e-mailů, které vyžadují ruční zásah. Ideální je, když si testy generují vlastní data a po sobě uklízejí.

Když už data máte, přichází na řadu jejich zpracování. Začněte tím, že z odpovědi vytáhnete konkrétní hodnotu – třeba jméno nebo číslo. Většina moderních jazyků má funkce, které převedou JSON na slovník nebo objekt, takže nemusíte parsovat ručně. Otestujte si, co se stane, když API vrátí prázdný výsledek – dobrý kód by měl umět ošetřit i tuto situaci. Doporučuji psát si krátké úryvky kódu, které pak můžete použít jako stavební bloky pro složitější aplikace.

Typická chyba, kterou v praxi vidím, je snaha pokrýt end-to-end testy úplně všechno. Pak se stane, že jeden test trvá dvě minuty a celá sada půl hodiny. Vývojáři čekají na výsledek, ztrácí kontext a testy se stávají spíše brzdou než pojistkou. Řešení je jednoduché: použijte pravidlo 80/15/5 – 80 % jednotkových, 15 % integračních a 5 % end-to-end testů. Většinu funkcionality totiž ověříte rychlými a spolehlivými testy na nižších vrstvách, a pomalé testy si necháte jen na nejdůležitější scénáře.

Dalším krokem je rozdělení kódu do malých funkcí. Pokud funkce dělá více než jednu věc, rozdělte ji. Například místo jednoho bloku, který validuje formulář, ukládá data a posílá notifikaci, vytvořte tři samostatné funkce. Výhodou je snadnější testování a opětovné použití. Pozor ale na přehnané členění – příliš mnoho jednorázových funkcí zbytečně komplikuje čtení. Ideální je najít rovnováhu.

První reálný požadavek a časté chyby Jakmile máte adresu koncového bodu, pošlete svůj první požadavek metodou GET. Většina API očekává určité parametry, které se předávají buď přímo v adrese, nebo v hlavičce. Nejdřív si přečtěte dokumentaci – i když vás to láká přeskočit, najdete tam povinné parametry a omezení. Typická chyba začátečníků je posílat požadavky bez správných hlaviček, jako je definice formátu. Když server odpoví chybou 400 nebo 404, nepropadejte panice: zkuste si přečíst odpověď, často obsahuje přesné vysvětlení.

Když se řekne automatizace, mnoho lidí si představí složité skripty a hodiny strávené programováním. Opak je pravdou – Python je ideální jazyk pro začátečníky, kteří chtějí zautomatizovat opakující se činnosti, ať už jde o přejmenování souborů, zpracování tabulek nebo stahování dat z webu. Základem je pochopit, že automatizace nemusí být dokonalá – stačí, aby ušetřila čas a eliminovala chyby z nepozornosti.

Při návrhu API často stojíte před zásadním rozhodnutím: zvolit REST, nebo GraphQL. Neexistuje univerzální odpověď — obě technologie mají své silné i slabé stránky. Klíčem je pochopit, co vaše aplikace skutečně potřebuje, a podle toho se rozhodnout. V tomto článku se zaměříme na konkrétní situace, kdy se vyplatí sáhnout po té či oné variantě.

Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor na limity – mnoho webů omezuje počet požadavků, takže do skriptu vložte pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro malé soubory stačí `csv` modul.