Když chcete psát testy v Pythonu, vyzkoušejte pytest a vyhněte se chybám

Z Mazovia

Nejdůležitější je pochopit, jak pytest spouští jednotlivé testy. Spuštění provedete příkazem pytest v adresáři s testy. Pytest sám prohledá aktuální složku a podsložky a najde soubory odpovídající konvenci. Když chcete spustit jen jeden soubor, napíšete pytest test_math.py. Pro konkrétní test použijete pytest test_math.py::test_plus. Tento zápis je užitečný, když máte mnoho testů a chcete rychle ověřit jeden z nich.

Jak formulovat odhad, který nezavazuje víc, než chcete Místo jediného čísla nabídněte rozpětí. Řekněte: „Předpokládám, že to bude hotové mezi desátým a patnáctým dnem." Tím pokryjete případné zpoždění a zákazník si zvykne na určitou flexibilitu. Druhým krokem je oddělit pevný termín od dílčích milníků. Můžete slíbit, že do určitého data dodáte první verzi, a finální verzi podmínit připomínkami. Tím získáte kontrolu nad průběhem a zákazník vidí pokrok.

V praxi se osvědčuje pravidlo „jedna větev = jedna logická změna". Před začátkem práce si zkontroluj, že vycházíš z aktuálního stavu hlavní větve, a větvi dej výstižný název, který popisuje úkol (například „oprava-prihlasovani" místo „feature1"). Po dokončení změn ji co nejdříve sluč zpět pomocí pull requestu nebo merge requestu. Právě pull request je místem, kde se odehrává code review – nikdo by neměl slučovat vlastní práci bez kontroly kolegy, a to ani v malém týmu. Tím se zachytí nejen chyby v logice, ale i špatně pojmenované proměnné nebo chybějící testy.

Základní rozhodnutí je mezi dvěma přístupy: sdíleným workflow, kde všichni pracují na jedné větvi, a větveným workflow, kde každá změna dostane vlastní větev. Sdílený model funguje pro jednoduché projekty a malé týmy, ale s rostoucím počtem lidí roste i riziko konfliktů. Větvený model, jakým je například Git Flow nebo GitHub Flow, dává každé funkci nebo opravě samostatný prostor. Neznamená to ale, že stačí větve vytvořit – bez pravidel se z nich stane jen další nepořádek.

Typickou chybou juniorů je, že se na pohovoru snaží odpovědět na všechno, i když netuší. Mnohem lepší je říct „tohle jsem zatím nepoužil, ale na základě principů bych to řešil takhle". Ukážeš tím, že umíš přemýšlet, a to je cennější než dokonalá znalost syntaxe. Stejně tak se vyhni tomu, abys na pohovoru kritizoval technologie, které neznáš. Každá firma má své preferované nástroje a pokud ti nevyhovují, je lepší to probrat férově, ale bez zbytečného negativismu.

První práce vývojáře nemusí být hned ve velké firmě. Malé firmy a startupy ti dají víc prostoru, ale taky víc zodpovědnosti. Před nástupem si zjisti, jak vypadá den seniorního vývojáře, kdo ti bude dělat code review a jak probíhá předávání úkolů. Pokud je tým malý a nikdo nemá čas na zaškolení, můžeš se rychle ztratit. Naopak ve větší firmě je struktura jasnější, ale můžeš být dlouho u nudných úkolů. Ideální je najít někde mezi, kde je mentor a zároveň prostor pro vlastní řešení.

Když tým začne pracovat na jednom repozitáři, přestává být git jen nástrojem pro ukládání verzí. Stává se komunikačním protokolem, který rozhoduje o tom, jak rychle se vyvíjí funkce, jak snadno se opravují chyby a hlavně jak často dochází ke konfliktům. Mnoho týmů podcení výběr workflow a skončí u chaotického pushování do hlavní větve, což vede k přepisování cizí práce a ztrátě času.

Shrňme si to: NoSQL je výkonný nástroj, ale jeho použití má smysl pouze tehdy, když rozumíte jeho omezením. Nevybírejte ho podle popularity, ale podle konkrétních požadavků na škálování, flexibilitu schématu a rychlost vývoje. Pokud váháte, zkuste nejprve prototyp s malým objemem dat a otestujte, jak vám vyhovuje modelování bez pevných tabulek. Často zjistíte, že SQL vám postačí a NoSQL přidá jen zbytečnou složitost. A pokud se rozhodnete pro NoSQL, investujte čas do studia jeho specifik – ušetříte si tím později spoustu bolesti při ladění výkonu.

Typickou chybou je také ignorování konvencí pro commity. Každý commit by měl být malý a srozumitelný – jeden commit řeší jednu věc a jeho zpráva popisuje, co a proč. Vyhnete se tak situaci, kdy je v jednom commitu pět změn a nikdo neví, co se vlastně stalo. Dobré pravidlo: pokud bys mohl commit rozpůlit na dva nezávislé, měl bys.

Dalším častým nešvarem je nechávat větev žít příliš dlouho. Čím déle existuje, tím víc se vzdaluje od hlavní a tím obtížnější je sloučení. Ideální je pracovat v krátkých cyklech – dokončit úkol do pár dnů, ne týdnů. Pokud potřebuješ na funkci pracovat déle, rozděl ji na menší části a každou doruč zvlášť. To také usnadňuje testování a nasazování. Nepoužívej rebase na sdílených větvích – přepisování historie na větvi, kterou používají ostatní, způsobí, že jejich lokální kopie přestanou souhlasit se vzdáleným repozitářem. Místo toho slučuj pomocí merge, který historii zachová.