Jak zorganizovat práci s více jazyky v jednom projektu
Jak správně postavit testovací scénář Základ každého unit testu je trojice: připrav, proveď, ověř. V přípravě vytvoříte vstupní data, a to včetně okrajových hodnot – prázdný řetězec, nulu, záporné číslo nebo prázdný seznam. Tyto okrajové případy dělají testy užitečnými, protože právě na nich se logika nejčastěji láme. Při samotném provedení voláte jen testovanou funkci, a to s připravenými daty. Ověření pak porovnává skutečný výsledek s očekávaným. Pozor na to, abyste v jednom testu nekombinovali více kontrol – pokud první kontrola selže, nezjistíte, jestli by prošla druhá.
Když začnete do jednoho projektu přidávat druhý nebo třetí jazyk, rychle zjistíte, že chaos vzniká spíš z organizace než z překladu samotného. Nejčastější chybou je ukládat texty přímo do zdrojového kódu, ať už jde o web, mobilní aplikaci nebo desktopový nástroj. Jakmile potřebujete změnit jednu větu, musíte hledat v desítkách souborů a riskujete, že něco přehlédnete. Mnohem lepší je oddělit veškeré texty od logiky aplikace a držet je v jednotném formátu, který podporuje klíče a hodnoty.
Při samotném psaní zdrojových textů myslete na délku. Česká věta je často delší než anglická, a pokud máte tlačítko s pevnou šířkou, text se ořízne. Vždy testujte, jak se překlad chová v extrémních případech — nejdelší slovo, nejdelší věta, nejdelší číslo s jednotkou. Stejně tak pozor na složené výrazy. V češtině skloňujeme, takže věta „Máte 3 nové zprávy" se nedá jednoduše poskládat z částí „Máte" + číslo + „nové zprávy". Používejte raději celé věty s placeholdery, než abyste spojovali kusy textu podle počtu.
Pytest také umožňuje parametrizaci testů, což je skvělý způsob, jak otestovat mnoho kombinací vstupů bez psaní duplicitního kódu. Pomocí @pytest.mark.parametrize nadefinujete seznam hodnot a funkcí, která je postupně projde. To se hodí pro hraniční případy, jako je prázdný řetězec, nula, záporná čísla nebo prázdný seznam. Díky parametrizaci získáte lepší pokrytí a při selhání hned víte, která konkrétní kombinace nefunguje.
Začít psát unit testy je snazší, než se zdá. Nemusíte hned pokrýt celou aplikaci, stačí začít u jedné malé funkce nebo metody, která má jasný vstup a výstup. Cílem prvního testu není dokonalost, ale pochopení principu: připravit data, spustit testovaný kód a ověřit, že výsledek odpovídá očekávání. Pro začátek si vyberte čistou funkci bez vedlejších efektů, třeba pro výpočet slevy nebo formátování data.
Po výběru prostředí se vyplatí investovat čas do základního nastavení. Nejdůležitější je správně nastavit interpret Pythonu: pokud používáte virtuální prostředí, ujistěte se, že IDE používá ten správný. Mnoho začátečníků dělá chybu, že spouští kód s globální instalací a poté řeší problémy s chybějícími balíčky, přestože je v projektu nainstalovaný správně. Dále si zjistěte klávesové zkratky pro spuštění souboru, přepínání mezi editorem a terminálem a pro komentování bloků kódu – ušetří vám to hodně času.
Přispívání do open source projektů může být skvělý způsob, jak se učit, budovat si portfolio a spolupracovat s lidmi z celého světa. Ale zejména na začátku je snadné udělat zbytečné chyby, které vás stojí čas i motivaci. Než začnete psát první kód, věnujte čas tomu, abyste projekt pochopili a našli si svou cestu.
Největší úskalí při psaní prvních testů je práce s náhodnými hodnotami, s časem a s globálním stavem. Pokud funkce používá aktuální datum nebo náhodu, test může pokaždé vrátit jiný výsledek. Řešením je předat takové hodnoty jako parametry, případně použít injektování závislostí. Nikdy nespoléhejte na to, že test projde, i když jste ho spustili stokrát – pokud obsahuje náhodu, je to jen otázka času, kdy selže. Stejně tak se vyhněte testům, které mění soubory nebo databázi bez předchozího vyčištění. Test by měl být opakovatelný a měl by běžet stejně dobře na vašem počítači i na serveru.
Nejdřív si definujte strukturu klíčů Než začnete překládat, navrhněte si systém pojmenování. Ideální je používat hierarchické klíče, třeba „header.navigation.home" nebo „checkout.button.submit". Vyhnete se tak dlouhým řetězcům, které jsou nepřehledné a při změně názvu funkce se snadno rozbijí. Důležité je také myslet na kontext: klíč „save" může být v jednom místě tlačítko, jinde odkaz. Proto klíč vždy popisuje umístění, ne jen samotný text. Tím zajistíte, že překladatelé a vývojáři budou přesně vědět, kde se řetězec používá.
Když začnete psát první unit test, nejčastější chybou je snaha pokrýt najednou příliš mnoho logiky. Test by měl ověřovat přesně jednu věc – jednu funkci, jednu metodu, jeden scénář. Než začnete, otevřete si kód, který chcete testovat, a napište si na papír tři základní věci: co funkce přijímá, co vrací a jaké má vedlejší efekty. Pokud funkce komunikuje s databází, soubory nebo sítí, test se výrazně zkomplikuje – proto je lepší začít u čistých funkcí, které jen zpracují vstup a vrátí výstup.