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



