PyUnit Tutorial: Python Unit Testing Framework (med exempel)

Innehållsförteckning:

Anonim

Vad är enhetstestning?

Enhetstestning i Python görs för att identifiera buggar tidigt i applikationsutvecklingsfasen när buggar är mindre återkommande och billigare att fixa.

Ett enhetstest är ett skriptkodnivåtest som är utformat i Python för att verifiera en liten "enhet" av funktionalitet. Enhetstest är ett objektorienterat ramverk baserat på testarmaturer.

Testtekniker för Python Unit

Python Unit Testing innebär främst att testa en viss modul utan åtkomst till någon beroende kod. Utvecklare kan använda tekniker som stubbar och mocks för att separera kod i "enheter" och köra enhetsnivåtester på de enskilda bitarna.

  • Testdriven utveckling TDD: Enhetstestning bör göras tillsammans med Python, och för det använder utvecklare testdriven utvecklingsmetod. I TDD-metoden designar du först Python Unit-tester och först fortsätter du att skriva koden som kommer att implementera den här funktionen.
  • Stubs and Mocks: De är två huvudtekniker som simulerar falska metoder som testas. En Stub används för att fylla i något beroende som krävs för att enhetstest ska kunna köras korrekt. En Mock å andra sidan är ett falskt objekt som kör testerna där vi hävdar.

    Intentionerna med båda metoderna är desamma för att eliminera testning av alla beroenden i en klass eller funktion.

Python Unit Testing Framework

För att göra enhetstestningsprocessen enklare och förbättra kvaliteten på ditt projekt rekommenderas Python Unit Testing Framework. Enhetstestningsramen innehåller

  • PyUnit: PyUnit stöder fixturer, testfall, testsviter och en testlöpare för automatisk testning av koden. I PyUnit kan du organisera testfall i sviter med samma fixturer
  • Näsa: Nos inbyggda plugin-program hjälper dig att fånga utdata, kodtäckning, doktester osv. Näsens syntax är ganska enklare och minskar hindren för att skriva tester. Det utökar Python unittest för att göra testningen enklare.
  • Doctest: Doctest-testskript går i docstring med liten funktion längst ner i filen. Doctest låter dig testa din kod genom att köra exempel som ingår i dokumentationen och verifiera att de returnerade de förväntade resultaten. Användningsfallet för doctest är mindre detaljerat och fångar inte speciella fall. De är användbara som en uttrycksfull dokumentation för huvudmodulen för en modul och dess komponenter.

Enhetstestning med PyUnit

Pyunit är en Python-port i JUnit. Som en del av Pyunit finns det i den unittest-modulen fem viktiga klasser.

  • TestCase-klass : TestCase-klassen bär testrutinerna och levererar krokar för att göra varje rutin och städa därefter
  • TestSuite-klass : Den fungerar som en uppsamlingsbehållare och den kan ha flera testcase-objekt och flera testsuit-objekt
  • TestLoader-klass : Denna klass laddar testfall och sviter som definierats lokalt eller från en extern fil. Den avger en testsuite-objekt som har dessa sviter och fall
  • TextTestRunner-klass : För att köra testerna tillgodoser den en standardplattform för att utföra testerna
  • TestResults-klassen : Den erbjuder en standardbehållare för testresultaten

Designa ett testfall för Python Testing med PyUnit

Ett enhetstest ger en basklass, testfall, som kan användas för att skapa nya testfall. För utformningen av testfallet finns det tre uppsättningar metoder som används

unittest.TestCase

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

I första uppsättningen finns testkrokarna före och efter. Installationsmetoden () börjar före varje testrutin, nedbrytningen () efter rutinen.

Den andra metoden kontrollerar testkörning. Båda metoderna tar en meddelandesträng som inmatning, och båda avbryter ett pågående test. Men metoden skiptest () avbryter det aktuella testet medan fail () -metoden misslyckas helt.

Den sista eller tredje metoden hjälper till att bestämma testet. Metoden id () returnerar en sträng som består av namnet på testcase-objektet och testrutinen. Och metoden shortDescription () returnerar dokstrkommentaren vid inledningen av varje testrutin.

Fördelar med att använda Python Unit-test

  • Det hjälper dig att upptäcka buggar tidigt i utvecklingscykeln
  • Det hjälper dig att skriva bättre program
  • Det synkroniseras enkelt med andra testmetoder och verktyg
  • Det kommer att ha många färre buggar
  • Det är lättare att modifiera i framtiden med mycket mindre konsekvenser