PyUnit Tutorial: Python Enhedstestramme (med eksempel)
Hvad er enhedstestning?
Enhedstest in Python er gjort for at identificere fejl tidligt i udviklingsstadiet af applikationen, nรฅr fejl er mindre tilbagevendende og billigere at rette.
En enhedstest er en scriptet kodeniveautest designet i Python at verificere en lille "enhed" af funktionalitet. Unit test er en objektorienteret ramme baseret pรฅ testarmaturer.
Python Enhedstestteknikker
Python Unit Testing involverer hovedsageligt at teste et bestemt modul uden at fรฅ adgang til nogen afhรฆngig kode. Udviklere kan bruge teknikker som stubs og mocks til at adskille kode i "enheder" og kรธre test pรฅ enhedsniveau pรฅ de individuelle stykker.
- Testdrevet udvikling TDD: Enhedstest skal udfรธres sammen med Python, og til det bruger udviklere Test-Driven Development-metoden. I TDD-metoden designer du fรธrst Python Enhedstest, og fรธrst derefter fortsรฆtter du med at skrive koden, der implementerer denne funktion.
-
Stubbe og hรฅner: Det er to hovedteknikker, der simulerer falske metoder, der bliver testet. EN Stub bruges til at udfylde en vis afhรฆngighed, der krรฆves for at enhedstesten kan kรธre korrekt. EN Mock pรฅ den anden side er en falsk genstand, som kรธrer de test, hvor vi sรฆtter assert.
Intentionerne med begge metoder er de samme for at eliminere test af alle afhรฆngigheder af en klasse eller funktion.
Python Enhedstestramme
For at gรธre Unit Testing-processen lettere og forbedre kvaliteten af โโdit projekt, anbefales det Python Enhedstestramme. Enhedstestningsrammen omfatter
-
PyUnit: PyUnit understรธtter inventar, testcases, testsuiter og en testlรธber til automatiseret test af koden. I PyUnit kan du organisere testcases i suiter med det samme inventar
-
Nรฆse: Nose's indbyggede plug-ins hjรฆlper dig med output capture, kodedรฆkning, doctests osv. Nose syntaks er ret enklere og reducerer barriererne for at skrive test. Det strรฆkker sig Python unittest for at gรธre test nemmere.
- Doktest: Doctest test script gรฅr i docstring med lille funktion i bunden af โโfilen. Doctest giver dig mulighed for at teste din kode ved at kรธre eksempler inkluderet i dokumentationen og verificere, at de returnerede de forventede resultater. Use-casen af โโdoctest er mindre detaljeret og fanger ikke sรฆrlige tilfรฆlde. De er nyttige som en udtryksfuld dokumentation af hovedanvendelsen af โโet modul og dets komponenter.
Enhedstest med PyUnit
Pyunit er en Python havn af JUnit. Som en del af Pyunit er der i unittest-modulet fem nรธgleklasser.
- TestCase klasse: TestCase-klassen bรฆrer testrutinerne og leverer kroge til at lave hver rutine og derefter rydde op
- TestSuite klasse: Den henvender sig som en indsamlingsbeholder, og den kan have flere testcase-objekter og flere testsuite-objekter
- TestLoader klasse: Denne klasse indlรฆser testcases og suiter defineret lokalt eller fra en ekstern fil. Det udsender en testsuite-objekter, der besidder disse suiter og sager
- TextTestRunner klasse: For at kรธre testene henvender den sig til en standardplatform til at udfรธre testene
- Klassen Testresultater: Den tilbyder en standardbeholder til testresultaterne
Design af en testcase til Python Test med PyUnit
En enhedstest giver en basisklasse, testcase, som kan bruges til at oprette nye testcases. Til design af testcasen er der tre sรฆt metoder, der anvendes
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
I det fรธrste sรฆt er pre og post test krogene. Setup()-metoden begynder fรธr hver testrutine, teardown() efter rutinen.
Det andet sรฆt metode kontrollerer testudfรธrelsen. Begge metoder tager en meddelelsesstreng som input, og begge annullerer en igangvรฆrende test. Men skiptest()-metoden afbryder den aktuelle test, mens fail()-metoden fejler den fuldstรฆndigt.
Den sidste eller tredje metode hjรฆlper med at bestemme testen. Metoden id() returnerer en streng bestรฅende af navnet pรฅ testcase-objektet og af testrutinen. Og metoden kortDescription() returnerer docstr-kommentaren ved initieringen af โโhver testrutine.
Fordele ved at bruge Python Enhedstest
- Det hjรฆlper dig med at opdage fejl tidligt i udviklingscyklussen
- Det hjรฆlper dig med at skrive bedre programmer
- Det synkroniserer nemt med andre testmetoder og vรฆrktรธjer
- Det vil have mange fรฆrre fejl
- Det er lettere at รฆndre i fremtiden med meget mindre konsekvens



