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

Python Egységvizsgálati technikák

  • 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ó.

Egységtesztelés PyUnit segítségével

  • 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

Teszteset tervezése a Python

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