PyUnit Tutorial: Python Unit Testing Framework (med eksempel)

Innholdsfortegnelse:

Anonim

Hva er enhetstesting?

Enhetstesting i Python gjøres for å identifisere feil tidlig i utviklingsfasen av applikasjonen når feil er mindre tilbakevendende og billigere å fikse.

En enhetstest er en skriptkodenivå-test designet i Python for å verifisere en liten "enhet" av funksjonalitet. Enhetstest er et objektorientert rammeverk basert på testinnretninger.

Python Unit Testing Techniques

Python Unit Testing innebærer hovedsakelig å teste en bestemt modul uten å få tilgang til noen avhengig kode. Utviklere kan bruke teknikker som stubber og mocks for å skille kode i "enheter" og kjøre enhetsnivåprøving på de enkelte brikkene.

  • Testdrevet utvikling TDD: Enhetstesting bør gjøres sammen med Python, og for det bruker utviklere testdrevet utviklingsmetode. I TDD-metoden designer du først Python Unit-tester, og bare deretter fortsetter du å skrive koden som skal implementere denne funksjonen.
  • Stubs and Mocks: De er to hovedteknikker som simulerer falske metoder som testes. En stub brukes til å fylle ut noe avhengighet som kreves for at enhetstesten skal kjøre riktig. En Mock er derimot en falsk gjenstand som kjører testene der vi hevder.

    Intensjonene med begge metodene er de samme for å eliminere testing av alle avhengighetene til en klasse eller funksjon.

Python Unit Testing Framework

For å gjøre enhetstestprosessen enklere og forbedre kvaliteten på prosjektet ditt, anbefales det Python Unit Testing Framework. Enhetstestingsrammen inkluderer

  • PyUnit: PyUnit støtter inventar, testtilfeller, testpakker og en testløper for automatisk testing av koden. I PyUnit kan du organisere testsaker i suiter med samme inventar
  • Nese: Nese's innebygde plugin-moduler hjelper deg med utdataopptak, kodedekning, doktester osv. Nese-syntaksen er ganske enklere og reduserer barrierer for å skrive tester. Det utvider Python unittest for å gjøre testing enklere.
  • Doctest: Doctest-testskript går i dokstring med liten funksjon nederst i filen. Doctest lar deg teste koden din ved å kjøre eksempler som er inkludert i dokumentasjonen og kontrollere at de returnerte de forventede resultatene. Bruken av doktest er mindre detaljert og tar ikke spesielle tilfeller. De er nyttige som en uttrykksfull dokumentasjon for hovedbrukssaken til en modul og dens komponenter.

Enhetstesting med PyUnit

Pyunit er en Python-port av JUnit. Som en del av Pyunit er det i den unittest-modulen fem nøkkelklasser.

  • TestCase-klasse : TestCase-klassen bærer testrutinene og leverer kroker for å lage hver rutine og rydde opp deretter
  • TestSuite-klasse : Den passer som en samlebeholder, og den kan ha flere testcase-objekter og flere testsuites-objekter
  • TestLoader-klasse : Denne klassen laster testtilfeller og suiter som er definert lokalt eller fra en ekstern fil. Den avgir en testsuite-gjenstander som har disse suitene og sakene
  • TextTestRunner-klasse : For å kjøre testene henvender den seg til en standard plattform for å utføre testene
  • TestResults-klassen : Den tilbyr en standard beholder for testresultatene

Designe en testkasse for Python Testing ved hjelp av PyUnit

En enhetstest gir en basisklasse, testtilfelle, som kan brukes til å lage nye testsaker. For utforming av testsaken er det tre sett med metoder som brukes

unittest.TestCase

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

I første sett er testkrokene før og etter. Oppsett () -metoden begynner før hver testrutine, nedrivningen () etter rutinen.

Det andre settet med metode kontrollerer utførelse av test. Begge metodene tar en meldingsstreng som inndata, og begge avbryter en pågående test. Men metoden skiptest () avbryter den nåværende testen mens fail () -metoden ikke fullfører den.

Den siste eller tredje metoden er med på å bestemme testen. Metoden id () returnerer en streng som består av navnet på testcase-objektet og testrutinen. Og metoden shortDescription () returnerer dokstrkommentaren ved starten av hver testrutine.

Fordeler med å bruke Python Unit testing

  • Det hjelper deg med å oppdage feil tidlig i utviklingssyklusen
  • Det hjelper deg å skrive bedre programmer
  • Den synkroniseres enkelt med andre testmetoder og verktøy
  • Det vil ha mange færre feil
  • Det er lettere å endre i fremtiden med veldig mindre konsekvens