Čo je testovanie jednotiek?
Testovanie jednotiek v Pythone sa vykonáva na identifikáciu chýb v ranom štádiu vývoja aplikácie, keď sú chyby menej opakujúce sa a ich oprava je lacnejšia.
Test jednotky je test na úrovni skriptovaného kódu navrhnutý v Pythone na overenie malej „jednotky“ funkčnosti. Unit test je objektovo orientovaný rámec založený na testovacích zariadeniach.
Techniky testovania jednotiek Python
Testovanie jednotiek v jazyku Python spočíva hlavne v testovaní konkrétneho modulu bez prístupu k závislému kódu. Vývojári môžu pomocou techník, ako sú útržky a posmešky, oddeliť kód na „jednotky“ a spustiť testovanie na úrovni jednotlivých častí.
- Test-Driven Development TDD: Testovanie jednotiek by sa malo robiť spolu s Pythonom, a preto vývojári používajú metódu Test-Driven Development. V metóde TDD najskôr navrhnete testy jednotky Python a až potom pokračujete v písaní kódu, ktorý bude implementovať túto funkciu.
- Pahýly a makety: Sú to dve hlavné techniky, ktoré simulujú falošné metódy, ktoré sa testujú. Pahýľ sa používa na vyplnenie nejakej závislosti potrebné pre jednotku testu, aby správne fungoval. Mock na druhej strane je objekt falošný ktorý beží testy, kde dáme Assert.
Zámery oboch metód sú rovnaké na vylúčenie testovania všetkých závislostí triedy alebo funkcie.
Rámec na testovanie jednotiek v jazyku Python
Na uľahčenie procesu testovania jednotiek a zlepšenie kvality vášho projektu sa odporúča Python Unit Testing Framework. Rámec pre testovanie jednotiek obsahuje
- PyUnit: PyUnit podporuje prípravky, testovacie prípady, testovacie sady a testovacieho bežca pre automatické testovanie kódu. V PyUnit môžete testovacie prípady organizovať do balíkov s rovnakými zariadeniami
- Nos: Vstavané moduly plug-in Nose vám pomôžu so zachytením výstupu, pokrytím kódu, doctestmi atď. Syntax nosa je oveľa jednoduchšia a znižuje prekážky pri písaní testov. Rozširuje Python unittest o uľahčenie testovania.
- Doctest: Skript na testovanie Doctest sa nachádza v dokumente s malou funkciou v dolnej časti súboru. Doctest vám umožňuje otestovať váš kód spustením príkladov uvedených v dokumentácii a overením, či vrátili očakávané výsledky. Prípad použitia doctest je menej podrobný a nezachytáva špeciálne prípady. Sú užitočné ako expresívna dokumentácia hlavného prípadu použitia modulu a jeho komponentov.
Testovanie jednotiek pomocou PyUnit
Pyunit je pythonovský port JUnit. Ako súčasť Pyunitu je v module unittest päť kľúčových tried.
- Trieda TestCase : Trieda TestCase nesie testovacie rutiny a poskytuje háčiky na vykonanie každej rutiny a následné čistenie.
- Trieda TestSuite : slúži ako zberný kontajner a môže obsahovať viac objektov testcase a viac objektov testsuite.
- Trieda TestLoader : Táto trieda načítava testovacie prípady a sady definované lokálne alebo z externého súboru. Vydáva objekty testsuite, ktoré majú tieto sady a puzdrá
- Trieda TextTestRunner : Na vykonávanie testov obstaráva štandardnú platformu na vykonávanie testov
- Trieda TestResults : Ponúka štandardný kontajner pre výsledky testu
Návrh testovacieho prípadu pre testovanie Pythonu pomocou PyUnit
Jednotkový test poskytuje základnú triedu, testovací prípad, ktorý sa môže použiť na vytvorenie nových testovacích prípadov. Pri navrhovaní testovacieho prípadu sa používajú tri súbory použitých metód
unittest.TestCase
setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string
V prvej sade sú háky pred a po skúške. Metóda setup () sa začína pred každou testovacou rutinou, teardown () po rutine.
Druhá sada metódy riadi vykonávanie testu. Obe metódy berú ako vstup reťazec správy a obidve rušia prebiehajúci test. Metóda skiptest () ale preruší aktuálny test, zatiaľ čo metóda fail () úplne zlyhá.
Posledná alebo tretia metóda pomáha pri stanovení testu. Metóda id () vracia reťazec pozostávajúci z názvu objektu testcase a testovacej rutiny. A metóda shortDescription () vráti komentár docstr na začiatku každej testovacej rutiny.
Výhody použitia testovania jednotky Python
- Pomáha vám odhaliť chyby na začiatku vývojového cyklu
- Pomáha vám písať lepšie programy
- Ľahko sa synchronizuje s inými testovacími metódami a nástrojmi
- Bude to mať oveľa menej chýb
- Je ľahšie ho v budúcnosti modifikovať s veľmi malými dôsledkami