PyUnit Tutorial: Python Unit Testing Framework (med eksempel)

Indholdsfortegnelse:

Anonim

Hvad er enhedstestning?

Enhedstestning i Python udføres for at identificere fejl tidligt i applikationens udviklingsfase, når fejl er mindre tilbagevendende og billigere at rette.

En enhedstest er en scriptet kodeniveau test designet i Python til at verificere en lille "enhed" af funktionalitet. Enhedstest er en objektorienteret ramme baseret på testarmaturer.

Testteknikker for Python-enhed

Python Unit Testing involverer primært test af et bestemt modul uden adgang til nogen afhængig kode. Udviklere kan bruge teknikker som stubs og mocks til at adskille kode i "enheder" og køre enhedsniveautestning på de enkelte stykker.

  • Testdrevet udvikling TDD: Enhedstestning skal udføres sammen med Python, og til det skal udviklere bruge testdrevet udviklingsmetode. I TDD-metoden designer du først Python Unit-tests, og først fortsætter du med at skrive den kode, der implementerer denne funktion.
  • Stubs og Mocks: De er to hovedteknikker, der simulerer falske metoder, der testes. En stub bruges til at udfylde en afhængighed, der kræves for at enhedstesten skal køre korrekt. En Mock på den anden side er en falsk genstand, der kører testene, hvor vi hævder.

    Intentionerne med begge metoder er de samme for at eliminere testning af alle afhængigheder i en klasse eller funktion.

Python Unit Testing Framework

For at gøre enhedstestprocessen nemmere og forbedre kvaliteten af ​​dit projekt anbefales Python Unit Testing Framework. Enhedstestningsrammen inkluderer

  • PyUnit: PyUnit understøtter inventar, testcases, testpakker og en testkører til automatisk test af koden. I PyUnit kan du organisere testcases i suiter med de samme inventar
  • Næse: Næses indbyggede plug-ins hjælper dig med outputfangst, kodedækning, doktests osv. Næsesyntaks er ret enklere og reducerer hindringerne for at skrive tests. Det udvider Python unittest for at gøre test nemmere.
  • Doctest: Doctest-test script går i dokstring med lille funktion i bunden af ​​filen. Doctest giver dig mulighed for at teste din kode ved at køre eksempler indeholdt i dokumentationen og kontrollere, at de returnerede de forventede resultater. Brugen af ​​doctest er mindre detaljeret og fanger ikke specielle tilfælde. De er nyttige som en udtryksfuld dokumentation for hovedmodulet for et modul og dets komponenter.

Enhedstest med PyUnit

Pyunit er en Python-port i JUnit. Som en del af Pyunit er der i det unittest modul fem nøgleklasser.

  • TestCase-klasse : TestCase-klassen bærer testrutinerne og leverer kroge til at lave hver rutine og rydde op derefter
  • TestSuite-klasse : Den fungerer som en opsamlingsbeholder, og den kan have flere testcase-objekter og flere testsuites-objekter
  • TestLoader-klasse : Denne klasse indlæser testcases og suiter defineret lokalt eller fra en ekstern fil. Den udsender en testsuite-objekter, der har disse suiter og sager
  • TextTestRunner-klasse : For at køre testene henvender det sig til en standardplatform til at udføre testene
  • TestResults-klassen : Den tilbyder en standardbeholder til testresultaterne

Design af en testkasse til Python-test ved hjælp af PyUnit

En enhedstest giver en basisklasse, test case, som kan bruges til at oprette nye test cases. Der er tre sæt metoder, der bruges til at designe testkassen

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

I det første sæt er testkrogene før og efter. Opsætningsmetoden () begynder før hver testrutine, nedrivningen () efter rutinen.

Det andet sæt metode styrer testudførelsen. Begge metoder tager en meddelelsesstreng som input, og begge annullerer en igangværende test. Men metoden skiptest () afbryder den aktuelle test, mens fail () -metoden mislykkes 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 testrutinen. Og metoden shortDescription () returnerer docstr-kommentaren ved starten 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
  • Det synkroniseres let med andre testmetoder og værktøjer
  • Det vil have mange færre bugs
  • Det er lettere at ændre i fremtiden med meget mindre konsekvens