PyUnit oktatóanyag: Python Egységtesztelési keretrendszer (példával)
Mi az az egységteszt?
Egység tesztelése in Python célja a hibák azonosítása az alkalmazás fejlesztési szakaszának korai szakaszában, amikor a hibák kevésbé visszatérőek és olcsóbb a javításuk.
Az egységteszt egy szkriptes kódszintű teszt, amelyet ben terveztek Python a funkcionalitás egy kis „egységének” ellenőrzésére. Az egységteszt egy objektumorientált keretrendszer, amely teszteszközökön alapul.
Python Egységvizsgálati technikák
Python Az egységtesztelés főként egy adott modul tesztelését jelenti függő kód elérése nélkül. A fejlesztők olyan technikákat használhatnak, mint a csonkok és gúnyok, hogy a kódot „egységekre” bontsák, és egységszintű tesztelést hajtsanak végre az egyes darabokon.
- Tesztvezérelt fejlesztési TDD: Az egységtesztet a Python, és ehhez a fejlesztők a tesztvezérelt fejlesztési módszert használják. A TDD módszerben először meg kell tervezni Python Az egységtesztek, és csak ezután folytathatja a funkciót megvalósító kód írását.
-
Csonkok és gúnyok: Ez két fő technika, amelyek a tesztelés alatt álló hamis módszereket szimulálják. A tuskó az egységteszt megfelelő futtatásához szükséges függőségek kitöltésére szolgál. A utánzott másrészt egy hamis objektum, amely lefuttatja a teszteket, ahol az assert-et helyezzük el.
Mindkét módszer célja ugyanaz, hogy kiküszöböljük egy osztály vagy függvény összes függőségének tesztelését.
Python Unit Testing Framework
Az egységtesztelési folyamat megkönnyítése és a projekt minőségének javítása érdekében ajánlott a Python Unit Testing Framework. A Unit Testing keretrendszer tartalmazza
-
PyUnit: A PyUnit támogatja a rögzítéseket, teszteseteket, tesztcsomagokat és egy tesztfutót a kód automatikus teszteléséhez. A PyUnitban a teszteseteket ugyanazokkal a fixtures csomagokkal rendezheti
-
Orr: A Nose beépített beépülő moduljai segítik a kimenet rögzítését, a kódlefedettséget, a docteszteket stb. A Nose szintaxisa meglehetősen egyszerű, és csökkenti a tesztírás előtti akadályokat. Meghosszabbodik Python unittest a tesztelés megkönnyítése érdekében.
- Doctest: A Doctest tesztelési szkript a docstringben található kis funkcióval a fájl alján. A Doctest lehetővé teszi a kód tesztelését a dokumentációban található példák futtatásával és annak ellenőrzésével, hogy a várt eredményeket adták-e vissza. A doctest használati esete kevésbé részletes, és nem ragad meg különleges eseteket. Hasznosak a modul és összetevői fő használati eseteinek kifejező dokumentációjaként.
Egységtesztelés PyUnit segítségével
Pyunit egy Python kikötő JUnit. A Pyunit részeként a unittest modulban öt kulcsosztály található.
- TestCase osztály: A TestCase osztály viseli a tesztrutinokat, és horgokat biztosít az egyes rutinok elvégzéséhez és az azt követő takarításhoz
- TestSuite osztály: Gyűjtőkonténerként szolgál, és több testcase objektumot és több testsuites objektumot is tartalmazhat
- TestLoader osztály: Ez az osztály helyileg vagy külső fájlból definiált teszteseteket és csomagokat tölt be. Testsuite objektumokat bocsát ki, amelyek birtokában vannak ezeknek a csomagoknak és toknak
- TextTestRunner osztály: A tesztek futtatásához szabványos platformot biztosít a tesztek végrehajtásához
- A TestResults osztály: Egy szabványos tárolót kínál a vizsgálati eredményekhez
Teszteset tervezése a Python Tesztelés PyUnit segítségével
Az egységteszt egy alaposztályt, tesztesetet biztosít, amely felhasználható új tesztesetek létrehozására. A teszteset megtervezéséhez három módszert alkalmaznak
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
Az első készletben a teszt előtti és utáni horgok találhatók. A setup() metódus minden tesztrutin előtt kezdődik, a teardown() pedig a rutin után.
A második metóduskészlet a teszt végrehajtását vezérli. Mindkét módszer egy üzenet karakterláncot vesz be bemenetként, és mindkettő megszakítja a folyamatban lévő tesztet. De a skiptest() metódus megszakítja az aktuális tesztet, míg a fail() metódus teljesen sikertelen.
Az utolsó vagy harmadik módszer segít a teszt meghatározásában. Az id() metódus egy karakterláncot ad vissza, amely a testcase objektum és a tesztrutin nevéből áll. És a módszer rövidenDescriptAz ion() visszaadja a docstr megjegyzést az egyes tesztrutinok indításakor.
A használat előnyei Python Egység tesztelése
- Segít a hibák észlelésében a fejlesztési ciklus korai szakaszában
- Segít jobb programokat írni
- Könnyen szinkronizálható más tesztelési módszerekkel és eszközökkel
- Sokkal kevesebb hibája lesz
- Könnyebb módosítani a jövőben, nagyon kevesebb következménnyel