Výukový program PyUnit: Python Unit Testing Framework (s příkladem)
Co je Unit Testing?
Testování jednotek in Python se provádí k identifikaci chyb v rané fázi vývoje aplikace, kdy se chyby méně opakují a jejich oprava je levnější.
Unit test je skriptovaný test na úrovni kódu navržený v Python k ověření malé „jednotky“ funkčnosti. Unit test je objektově orientovaný rámec založený na testovacích přípravcích.
Python Jednotkové zkušební techniky
Python Testování jednotek zahrnuje především testování konkrétního modulu bez přístupu k libovolnému závislému kódu. Vývojáři mohou k oddělení kódu do „jednotek“ použít techniky, jako jsou útržky a simulace, a spustit testování na úrovni jednotlivých kusů.
- Testem řízený vývoj TDD: Testování jednotky by mělo být provedeno společně s Pythona k tomu vývojáři používají metodu Test-Driven Development. V metodě TDD nejprve navrhnete Python Unit testuje a teprve potom pokračujete v psaní kódu, který bude tuto funkci implementovat.
-
Pahýly a zesměšňování: Jsou to dvě hlavní techniky, které simulují falešné metody, které se testují. A Pahýl se používá k vyplnění některých závislostí, které jsou nutné pro správný běh unit testu. A Falešný na druhé straně je falešný objekt, který spouští testy, kam vkládáme claim.
Záměry obou metod jsou stejné, aby se eliminovalo testování všech závislostí třídy nebo funkce.
Python Unit Testing Framework
Pro usnadnění procesu Unit Testing a zlepšení kvality vašeho projektu se doporučuje Python Unit Testing Framework. Rámec Unit Testing zahrnuje
-
PyUnit: PyUnit podporuje přípravky, testovací případy, testovací sady a testovací běh pro automatické testování kódu. V PyUnit můžete organizovat testovací případy do sad se stejným příslušenstvím
-
Nos: Vestavěné zásuvné moduly Nose vám pomohou se zachycením výstupu, pokrytím kódu, doctesty atd. Syntaxe Nose je mnohem jednodušší a snižuje překážky při psaní testů. Prodlužuje se Python unittest pro usnadnění testování.
- Doctest: Testovací skript Doctest jde v docstring s malou funkcí v dolní části souboru. Doctest vám umožňuje otestovat váš kód spuštěním příkladů zahrnutých v dokumentaci a ověřením, že vrátily očekávané výsledky. Případ použití doctestu je méně podrobný a nezachycuje speciální případy. Jsou užitečné jako expresivní dokumentace hlavního případu použití modulu a jeho komponent.
Testování jednotek pomocí PyUnit
Pyunit je a Python port of JUnit. Jako součást Pyunit je v modulu unittest pět klíčových tříd.
- Třída TestCase: Třída TestCase nese testovací rutiny a poskytuje háčky pro vytvoření každé rutiny a následné čištění
- Třída TestSuite: Slouží jako sběrný kontejner a může vlastnit více objektů testovacího případu a více objektů testovacích sad
- Třída TestLoader: Tato třída načte testovací případy a sady definované lokálně nebo z externího souboru. Vysílá objekty testovací soupravy, které vlastní tyto soupravy a případy
- Třída TextTestRunner: Pro spouštění testů zajišťuje standardní platformu pro provádění testů
- Třída TestResults: Nabízí standardní nádobu pro výsledky testu
Navrhování testovacího případu pro Python Testování pomocí PyUnit
Unit test poskytuje základní třídu, testovací případ, který lze použít k vytvoření nových testovacích případů. Pro návrh testovacího případu se používají tři sady metod
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
V první sadě jsou před a po testovací háčky. Metoda setup() začíná před každou testovací rutinou, teardown() po rutině.
Druhá sada metod řídí provádění testu. Obě metody berou jako vstup řetězec zprávy a obě ruší probíhající test. Ale metoda skiptest() přeruší aktuální test, zatímco metoda fail() jej úplně selže.
Poslední nebo třetí metoda pomáhá určit test. Metoda id() vrací řetězec sestávající z názvu objektu testcase a testovací rutiny. A metoda krátkáDescription() vrací komentář docstr při zahájení každé testovací rutiny.
Výhody použití Python Testování jednotek
- Pomůže vám to odhalit chyby na začátku vývojového cyklu
- Pomáhá vám psát lepší programy
- Snadno se synchronizuje s jinými testovacími metodami a nástroji
- Bude mít mnohem méně chyb
- Je snazší v budoucnu upravit s velmi menšími následky