PyUnit veiledning: Python Rammeverk for enhetstesting (med eksempel)
Hva er enhetstesting?
Enhetstesting in Python gjøres for å identifisere feil tidlig i utviklingsstadiet av applikasjonen når feil er mindre gjentakende og rimeligere å fikse.
En enhetstest er en skriptet kodenivåtest designet i Python for å verifisere en liten "enhet" av funksjonalitet. Unit test er et objektorientert rammeverk basert på testarmaturer.
Python Enhetstestingsteknikker
Python Enhetstesting innebærer hovedsakelig å teste en bestemt modul uten å få tilgang til noen avhengig kode. Utviklere kan bruke teknikker som stubber og spotter for å skille kode i "enheter" og kjøre testing på enhetsnivå på de individuelle brikkene.
- Testdrevet utvikling TDD: Enhetstesting bør utføres sammen med Python, og for det bruker utviklere Test-Driven Development-metoden. I TDD-metoden designer du først Python Enhetstester og først da fortsetter du å skrive koden som skal implementere denne funksjonen.
-
Stubber og håner: De er to hovedteknikker som simulerer falske metoder som blir testet. EN stub brukes til å fylle ut noe avhengighet som kreves for at enhetstesten skal kjøre riktig. EN håne på den annen side er en falsk gjenstand som kjører testene der vi legger påstå.
Intensjonene til begge metodene er de samme for å eliminere testing av alle avhengighetene til en klasse eller funksjon.
Python Rammeverk for enhetstesting
For å gjøre enhetstestingen enklere og forbedre kvaliteten på prosjektet ditt, anbefales det Python Rammeverk for enhetstesting. Rammeverket for enhetstesting inkluderer
-
PyUnit: PyUnit støtter inventar, testtilfeller, testsuiter og en testløper for automatisert testing av koden. I PyUnit kan du organisere testtilfeller i suiter med samme inventar
-
nese: Nose's innebygde plug-ins hjelper deg med utdatafangst, kodedekning, doctests osv. Nesesyntaks er ganske enklere og reduserer barrierene for å skrive tester. Den strekker seg Python unittest for å gjøre testingen enklere.
- Doktest: Doctest testskript går i docstring med liten funksjon nederst i filen. Doctest lar deg teste koden din ved å kjøre eksempler inkludert i dokumentasjonen og bekrefte at de ga de forventede resultatene. Brukssaken til doctest er mindre detaljert og fanger ikke opp spesielle tilfeller. De er nyttige som en uttrykksfull dokumentasjon av hovedbrukssaken til en modul og dens komponenter.
Enhetstesting med PyUnit
Pyunit er en Python havn av JUnit. Som en del av Pyunit er det fem nøkkelklasser i unittest-modulen.
- TestCase klasse: TestCase-klassen bærer testrutinene og leverer kroker for å lage hver rutine og rydde opp etterpå
- TestSuite klasse: Den henvender seg som en oppsamlingsbeholder, og den kan ha flere testcase-objekter og flere testsuite-objekter
- TestLoader klasse: Denne klassen laster testtilfeller og suiter definert lokalt eller fra en ekstern fil. Den sender ut en testsuite-objekter som har disse suitene og sakene
- TextTestRunner-klassen: For å kjøre testene henvender den seg til en standardplattform for å utføre testene
- Klassen Testresultater: Den tilbyr en standardbeholder for testresultatene
Designe en testcase for Python Testing med PyUnit
En enhetstest gir en basisklasse, testcase, som kan brukes til å lage nye testcases. For utforming av testtilfellet er det tre sett med metoder som brukes
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
I det første settet er pre- og posttestkrokene. Setup()-metoden begynner før hver testrutine, teardown() etter rutinen.
Det andre settet med metode kontrollerer testutførelse. Begge metodene tar en meldingsstreng som input, og begge kansellerer en pågående test. Men skiptest()-metoden avbryter den gjeldende testen mens fail()-metoden mislykkes fullstendig.
Den siste eller tredje metoden hjelper til med å bestemme testen. Metoden id() returnerer en streng som består av navnet på testcase-objektet og testrutinen. Og metoden kortDescription() returnerer docstr-kommentaren ved initiering av hver testrutine.
Fordeler med å bruke Python Enhetstesting
- Det hjelper deg å oppdage feil tidlig i utviklingssyklusen
- Det hjelper deg å skrive bedre programmer
- Den synkroniseres enkelt med andre testmetoder og verktøy
- Den vil ha mange færre feil
- Det er lettere å endre i fremtiden med svært mindre konsekvens