Co se stane, když testy v Pythonu začnou odhalovat chyby dřív
Jakmile pipeline jednou funguje, ušetří vám hodiny rutinní práce a sníží riziko lidské chyby. Není nutné začínat složitě – stačí jedna úloha, která po každém pushi spustí testy. Postupně můžete přidávat build, nasazení, kontrolu kvality kódu nebo bezpečnostní skenování. Důležité je, aby workflow bylo čitelné a verifikovatelné, protože i automatizace se občas pokazí a je třeba rychle zjistit proč.
Začněte tím, že si vyberete jedno konkrétní API a přečtete si jeho dokumentaci od začátku do konce. Neběhejte mezi deseti službami. Zjistěte, jakou adresu má základní dotaz, jaké metody podporuje a co vrací za data. Potom si připravte nástroj, kterým odešlete požadavek ručně. Může to být cokoli, co umí poslat HTTP požadavek a zobrazit odpověď. Cílem je vidět přesně to, co server posílá zpět, úložné prostory v malém bytěčetně stavového kódu a hlaviček.
Ukládejte si klíče a tokeny mimo kód. Nikdy je nevkládejte přímo do skriptu, který někam nahráváte. Když klíč unikne, musíte ho zneplatnit a vytvořit nový. Stejně tak si zapisujte, co které volání vrátilo, když něco nefungovalo. Bez záznamu se chyba hledá mnohem obtížněji. Až budete mít jedno API zvládnuté, přechod na další bude výrazně rychlejší, protože principy zůstávají stejné.
Před každým větším refaktoringem mějte uložený stav v systému správy verzí. IDE sice obsahuje lokální historii, ale ta není náhradou za commit. Pracujte po malých krocích a po každém spusťte testy nebo alespoň kompilaci. Zabráníte tomu, abyste po hodině zjistili, že jste rozbili něco, co jste vůbec neměnili.
Chyby, které zdrží nejvíc Nejčastější chyba je ignorování stavových kódů. Když přijde odpověď 200, je to v pořádku. Když 404, adresa neexistuje. Když 429, poslali jste příliš mnoho požadavků. A když 500, problém je na straně serveru a nemá smysl měnit svůj kód. Druhá častá chyba je posílání dat ve špatném formátu. Většina moderních API očekává JSON, ale některá chtějí data jako formulář. Pokud pošlete JSON tam, kde se čeká formulář, server vrátí chybu, i když jsou hodnoty správné.
Co se týče izolace, testy by na sobě neměly záviset. Pořadí, v jakém pytest testy spustí, není zaručené. Pokud jeden test vytvoří soubor a jiný ho potřebuje, je to špatně. Vždy po sobě uklízejte, ideálně pomocí fixtury s yield, která po testu provede úklid. Také pozor rekonstrukce bytu na globální stav – moduly v Pythonu se importují jen jednou, takže modifikace globální proměnné ovlivní i další testy. Řešením je předávat stav přes fixtury nebo používat monkeypatch.
Oddělte kontrakt od interního modelu V praxi to znamená definovat vlastní datové typy pro API. Místo aby odpověď kopírovala řádek z databáze, vytvořte DTO, které obsahuje jen to, co klient skutečně potřebuje. Pokud se interní model změní – přejmenujete sloupec, rozdělíte entitu na dvě – kontrakt zůstane stejný. Mapování mezi interním modelem a DTO řešte na jednom místě, ideálně v tenké vrstvě, kterou lze snadno upravit. Tím získáte svobodu měnit databázi, aniž by o tom klienti věděli.
Na závěr: než začnete měnit kód, zkuste problém zopakovat stejným postupem. Zapište si, co jste udělali, co jste čekali a co se stalo. Tím oddělíte skutečnou příčinu od náhody. Většina chyb zmizí, když ji dokážete spolehlivě vyvolat — a to je přesně to, co vám konzole a breakpointy umožní.
Ruční sestavování a nasazování aplikace při každé změně kódu je zdlouhavé a náchylné k chybám. GitHub Actions umožňuje tyto kroky popsat v souboru YAML, který se spouští automaticky při pushi, pull requestu nebo podle časovače. Pipeline pak zajistí, že se kód otestuje, zkompiluje a případně nasadí konzistentně pokaždé, když se něco změní. Základem je vytvořit v repozitáři složku .github/workflows a do ní vložit soubor s definicí workflow.
Jakmile zvládnete jedno volání ručně, přepište ho do kódu. Začněte jednoduchým skriptem, který odešle požadavek a vypíše odpověď. Teprve potom přidávejte zpracování dat, ošetření chyb a opakování při selhání. Nesnažte se napsat rovnou celou aplikaci. Většina problémů vzniká tím, že se příliš mnoho věcí řeší najednou a není vidět, která část nefunguje.
Dávejte pozor na omezení počtu požadavků. Mnoho API povolí jen určitý počet volání za minutu nebo za hodinu. Pokud limit překročíte, přestane vám fungovat i to, co jinde fungovalo. Řešením je posílat požadavky pomalu, ukládat si odpovědi, které se nemění, a při překročení limitu chvíli počkat. Nikdy neposílejte požadavky ve smyčce bez přestávky, i když to na malém množství dat vypadá, že funguje.
Na závěr: návrh API není o tom, co funguje dnes, ale co přežije zítřejší změnu modelu. Oddělte kontrakt, používejte veřejné identifikátory, přidávejte místo přepisování a testujte scénáře, kdy se interní model změní. Ušetříte si noční nasazování a vysvětlování, proč klienti najednou nefungují.
If you beloved this article and you also would like to be given more info pertaining to DokončEní InteriéRu please visit our internet site.