Jak začít s testováním v Pythonu pomocí pytest: Różnice pomiędzy wersjami

Z Mazovia
Utworzono nową stronę "Pokud jde o strukturu projektu, neházejte všechno do jednoho souboru. Rozdělte kód na moduly – oddělte routes, controllers a služby pro práci s daty. Tím získáte přehlednost a usnadníte si testování. Pro menší API stačí i tři soubory, ale pro větší projekty je dobré zavést složkovou strukturu. Důležité je taky myslet na CORS – pokud vaše API budou volat prohlížeče z jiné domény, musíte povolit příslušné hlavičky, jinak po…"
 
mNie podano opisu zmian
Linia 1: Linia 1:
Pokud jde o strukturu projektu, neházejte všechno do jednoho souboru. Rozdělte kód na moduly – oddělte routes, controllers a služby pro práci s daty. Tím získáte přehlednost a usnadníte si testování. Pro menší API stačí i tři soubory, ale pro větší projekty je dobré zavést složkovou strukturu. Důležité je taky myslet na CORS – pokud vaše API budou volat prohlížeče z jiné domény, musíte povolit příslušné hlavičky, jinak požadavky skončí chybou.<br><br>Když se řekne REST API v Node.js, většina vývojářů sáhne po frameworku Express. Není to náhoda – Express je minimalistický, dobře zdokumentovaný a díky své flexibilitě vám umožní postavit API přesně podle potřeb. Než ale začnete psát první endpoint, ujasněte si, co vlastně chcete, aby vaše API dělalo. Bez jasné definice zdrojů a jejich vztahů snadno skončíte u nepřehledného kódu, který se bude těžko udržovat.<br><br>Další pastí je zapomínání na okolní prostředí – skript, který běží na Windows, může selhat na Linuxu kvůli odlišným oddělovačům cest. Používejte funkce z `pathlib.Path`, které jsou multiplatformní, a testujte skript na více zařízeních, pokud to je možné. Důležité je také verzování – i jednoduchý skript uložte do Gitu, abyste se mohli vrátit k předchozí funkční verzi, když něco rozbijete. Tento návyk se vám vyplatí u všech projektů.<br><br>Když přijde na responzivní design, většina vývojářů sáhne po CSS Gridu nebo Flexboxu. Oba nástroje mají své silné stránky, ale jejich kombinace může být matoucí, pokud nevíte, kdy který použít. Základní pravidlo je jednoduché: Grid je ideální pro celkovou strukturu stránky, zatímco Flexbox se hodí pro rozmístění prvků v jednom řádku nebo sloupci. Tento článek vám ukáže, jak na to bez zbytečných obav.<br><br>Nejdůležitější je mít funkční portfolio. Místo pěti rozpracovaných projektů raději tři hotové, které běží, mají čistý kód a jsou zdokumentované. Publikujte je na veřejném repozitáři a připojte krátký popis, jakou jste řešili výzvu a co jste se naučili. Personalisti i techničtí lídři si všímají toho, jestli umíte dotáhnout práci do konce. Chyba je posílat životopis bez odkazů nebo s odkazy na nefunkční stránky.<br><br>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.<br><br>Na závěr si osvojte práci s příkazy příkazové řádky. Při spuštění pytest -v získáte podrobnější výstup o každém testu, pytest -k umožní spustit pouze testy odpovídající zadanému výrazu a pytest --maxfail=1 zastaví běh po prvním selhání. Tyto nástroje vám ušetří čas při ladění. Testování není zbytečná práce – je to investice, která se vám vrátí v podobě stabilnějšího kódu a jistoty při změnách. Začněte s malými testy na jednoduchých funkcích a postupně přidávejte složitější scénáře.<br><br>Jak se vyhnout častým chybám při psaní skriptů Nejčastější chybou začátečníků je tvrdé zakódování cest k souborům. Pokud použijete absolutní cestu, skript bude fungovat pouze na vašem počítači. Místo toho použijte relativní cesty nebo proměnné, které umožní skript spustit kdekoli. Druhým problémem je ignorování výjimek – soubor nemusí existovat, síť může být nedostupná, vstup nemusí odpovídat očekávání. Vždy obalte rizikové operace do bloku `try/except` a na chyby reagujte srozumitelnou hláškou.<br><br>Příprava na pohovor: co se skutečně ptají Na pohovoru se vás nebudou ptát na definice z učebnice, ale na konkrétní situace. Typická otázka zní: „Popište, jak byste navrhli aplikaci pro správu úkolů." Ukažte, že umíte přemýšlet v souvislostech rozdělte problém na menší části, zmiňte databázi, API a uživatelské rozhraní. Když nevíte přesnou odpověď, řekněte, jak byste postupovali, abyste ji našli. Nikdy neříkejte „nevím" bez dalšího vysvětlení.<br><br>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.
Postup převodu schématu a dat Pro převod schématu použijte nástroj jako pgloader nebo ruční skript. Pokud migrujete ručně, začněte vytvořením databáze v PostgreSQL a postupně vytvářejte tabulky. Nahraďte AUTO_INCREMENT za SERIAL nebo GENERATED AS IDENTITY, upravte ENUM na CREATE TYPE, a převeďte datumové a časové typy podle potřeby. Následně exportujte data z MySQL do CSV nebo SQL souboru a importujte je pomocí COPY nebo psql. Vždy před importem vypněte kontroly cizích klíčů, abyste předešli chybám pořadí.<br><br>Poslední rada: sledujte metriky, ale ne ty povrchní. Nesledujte jen, kolik nasazení proběhne za týden. Sledujte, jak rychle se daří obnovit službu po výpadku, jak dlouho trvá projít od změny kódu po produkci a jak často dochází k selhání nasazení. Tyto ukazatele vám řeknou víc než počet automatizovaných testů. Až budete mít vše stabilní, můžete postupně rozšiřovat rozsah – přidávat další prostředí, další týmy a další automatizaci.<br><br>Začněte tím, že si definujete výstup analýzy. Nejde o to napsat tlustý dokument, ale o to, aby měl tým jasno v akceptačních kritériích, hranicích systému a možných technických omezeních. V praxi to znamená odhadnout analytický čas podle počtu neznámých proměnných. Pokud máte úkol s vysokou nejistotou, věnujte analýze více času, ale vždy s jasným časovým limitem, aby se z ní nestala nekonečná rešerše. Užitečný je princip „timeboxing", kdy si analytik vyhradí konkrétní hodiny, po jejichž uplynutí se rozhodne, zda je třeba analýzu rozšířit, nebo ji předat k implementaci.<br><br>Nakonec si dejte pozor na příliš složité nástroje, které vyžadují rozsáhlé školení. I když mají bohaté možnosti, jejich konfigurace může být natolik komplexní, že ji tým nebude efektivně využívat. Raději zvolte nástroj, který je jednoduchý na pochopení a jeho nastavení je transparentní. Po nasazení sledujte, zda se snižuje počet konfliktů ve verzovacím systému a zda se noví členové týmu rychle zapracují. Pokud se tak nestane, znamená to, že konfigurace není dostatečně jednotná a je třeba ji upravit.<br><br>Typickým problémem je rozdílné chování prázdných řetězců a NULL. MySQL ukládá prázdný řetězec jako '', zatímco PostgreSQL rozlišuje mezi '' a NULL – pokud aplikace spoléhá na prázdný řetězec, může dojít k logickým chybám. Dále si pohlídejte práci s celočíselnými děleními: v MySQL je 5/2 rovno 2, v PostgreSQL je to 2.5, což může rozbít výpočty. Proveďte důkladný test všech dotazů, zejména těch, které používají agregační funkce, GROUP BY nebo poddotazy.<br><br>Nejprve si vytvořte kompletní inventář schématu: seznam tabulek, indexů, pohledů, triggerů a uložených procedur. V MySQL se často používají typy jako TINYINT, ENUM nebo AUTO_INCREMENT, zatímco PostgreSQL preferuje SMALLINT, vlastní enum typy a sekvence. Při převodu datových typů dejte pozor na rozdíly v práci s řetězci: MySQL porovnává texty case-insensitive podle collation, PostgreSQL je case-sensitive, což může změnit výsledky dotazů.<br><br>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.<br><br>Jak zjistit reálný poměr mezi analýzou a kódováním Místo odhadů „od oka" použijte historická data z předchozích sprintů. Podívejte se, kolik času skutečně zabrala analýza a kolik implementace u podobných úkolů. Zjistíte, že některé typy úkolů, jako jsou změny v databázovém schématu nebo napojení na externí služby, vyžadují výrazně více analytické práce. Naopak rutinní úpravy formulářů nebo hlášek mívají analýzu krátkou. Tato data vám umožní kalibrovat odhad podle reálné historie, nikoli podle přání.<br><br>Když se řekne API, mnoho začátečníků si představí něco složitého a nedostupného. Přitom jde o jednoduchý koncept: API je rozhraní, které umožňuje dvěma programům spolu komunikovat. Můžeš si ho představit jako číšníka v restauraci objednáš jídlo (pošleš požadavek) a on ti donese výsledek (odpověď). Pro první kroky nemusíš mít žádné speciální nástroje, stačí ti prohlížeč a textový editor.<br><br>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.

Wersja z 18:57, 21 sie 2026

Postup převodu schématu a dat Pro převod schématu použijte nástroj jako pgloader nebo ruční skript. Pokud migrujete ručně, začněte vytvořením databáze v PostgreSQL a postupně vytvářejte tabulky. Nahraďte AUTO_INCREMENT za SERIAL nebo GENERATED AS IDENTITY, upravte ENUM na CREATE TYPE, a převeďte datumové a časové typy podle potřeby. Následně exportujte data z MySQL do CSV nebo SQL souboru a importujte je pomocí COPY nebo psql. Vždy před importem vypněte kontroly cizích klíčů, abyste předešli chybám pořadí.

Poslední rada: sledujte metriky, ale ne ty povrchní. Nesledujte jen, kolik nasazení proběhne za týden. Sledujte, jak rychle se daří obnovit službu po výpadku, jak dlouho trvá projít od změny kódu po produkci a jak často dochází k selhání nasazení. Tyto ukazatele vám řeknou víc než počet automatizovaných testů. Až budete mít vše stabilní, můžete postupně rozšiřovat rozsah – přidávat další prostředí, další týmy a další automatizaci.

Začněte tím, že si definujete výstup analýzy. Nejde o to napsat tlustý dokument, ale o to, aby měl tým jasno v akceptačních kritériích, hranicích systému a možných technických omezeních. V praxi to znamená odhadnout analytický čas podle počtu neznámých proměnných. Pokud máte úkol s vysokou nejistotou, věnujte analýze více času, ale vždy s jasným časovým limitem, aby se z ní nestala nekonečná rešerše. Užitečný je princip „timeboxing", kdy si analytik vyhradí konkrétní hodiny, po jejichž uplynutí se rozhodne, zda je třeba analýzu rozšířit, nebo ji předat k implementaci.

Nakonec si dejte pozor na příliš složité nástroje, které vyžadují rozsáhlé školení. I když mají bohaté možnosti, jejich konfigurace může být natolik komplexní, že ji tým nebude efektivně využívat. Raději zvolte nástroj, který je jednoduchý na pochopení a jeho nastavení je transparentní. Po nasazení sledujte, zda se snižuje počet konfliktů ve verzovacím systému a zda se noví členové týmu rychle zapracují. Pokud se tak nestane, znamená to, že konfigurace není dostatečně jednotná a je třeba ji upravit.

Typickým problémem je rozdílné chování prázdných řetězců a NULL. MySQL ukládá prázdný řetězec jako , zatímco PostgreSQL rozlišuje mezi a NULL – pokud aplikace spoléhá na prázdný řetězec, může dojít k logickým chybám. Dále si pohlídejte práci s celočíselnými děleními: v MySQL je 5/2 rovno 2, v PostgreSQL je to 2.5, což může rozbít výpočty. Proveďte důkladný test všech dotazů, zejména těch, které používají agregační funkce, GROUP BY nebo poddotazy.

Nejprve si vytvořte kompletní inventář schématu: seznam tabulek, indexů, pohledů, triggerů a uložených procedur. V MySQL se často používají typy jako TINYINT, ENUM nebo AUTO_INCREMENT, zatímco PostgreSQL preferuje SMALLINT, vlastní enum typy a sekvence. Při převodu datových typů dejte pozor na rozdíly v práci s řetězci: MySQL porovnává texty case-insensitive podle collation, PostgreSQL je case-sensitive, což může změnit výsledky dotazů.

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 zjistit reálný poměr mezi analýzou a kódováním Místo odhadů „od oka" použijte historická data z předchozích sprintů. Podívejte se, kolik času skutečně zabrala analýza a kolik implementace u podobných úkolů. Zjistíte, že některé typy úkolů, jako jsou změny v databázovém schématu nebo napojení na externí služby, vyžadují výrazně více analytické práce. Naopak rutinní úpravy formulářů nebo hlášek mívají analýzu krátkou. Tato data vám umožní kalibrovat odhad podle reálné historie, nikoli podle přání.

Když se řekne API, mnoho začátečníků si představí něco složitého a nedostupného. Přitom jde o jednoduchý koncept: API je rozhraní, které umožňuje dvěma programům spolu komunikovat. Můžeš si ho představit jako číšníka v restauraci – objednáš jídlo (pošleš požadavek) a on ti donese výsledek (odpověď). Pro první kroky nemusíš mít žádné speciální nástroje, stačí ti prohlížeč a textový editor.

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.