PyUnit Tutorial: Python Unit Testing Framework (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 for 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: Unit Testing bør udføres sammen med Python, og til det bruger udviklere Test-Driven Development-metoden. I TDD-metoden designer du først Python Unit-tests, 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 Unit Testing Framework

For at gøre Unit Testing-processen nemmere og forbedre kvaliteten af ​​dit projekt, anbefales det Python Unit Testing Framework. 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 udvider 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-port 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 ved hjælp af 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 shortDescription() returnerer docstr-kommentaren ved initieringen af ​​hver testrutine.

Fordele ved at bruge Python Unit test

  • Det hjælper dig med at opdage fejl tidligt i udviklingscyklussen
  • Det hjælper dig med at skrive bedre programmer
  • It syncer 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