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

Python Enhedstestteknikker

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

Enhedstest med PyUnit

  • 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

Design af en testcase til Python

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

Opsummer dette indlรฆg med: