PyUnit handledning: Python Enhetstestningsramverk (med exempel)

Vad är enhetstestning?

Enhetstestning in Python görs för att identifiera buggar tidigt i utvecklingsstadiet av applikationen när buggar är mindre återkommande och billigare att åtgärda.

Ett enhetstest är ett skriptkodnivåtest designat i Python för att verifiera en liten "enhet" av funktionalitet. Unit test är ett objektorienterat ramverk baserat på testfixturer.

Python Enhetstestningstekniker

Python Enhetstestning innebär huvudsakligen att man testar en viss modul utan att komma åt någon beroende kod. Utvecklare kan använda tekniker som stubbar och hånar för att separera kod i "enheter" och köra enhetsnivåtestning på de enskilda bitarna.

  • Testdriven utveckling TDD: Enhetstestning bör göras tillsammans med Python, och för det använder utvecklarna testdriven utvecklingsmetod. I TDD-metoden designar du först Python Enhetstester och först då fortsätter du att skriva koden som kommer att implementera denna funktion.
  • Stubbar och hånar: De är två huvudtekniker som simulerar falska metoder som testas. A Stump används för att fylla i ett visst beroende som krävs för att enhetstestet ska fungera korrekt. A Falsk å andra sidan är ett falskt föremål som kör testerna där vi sätter påstå.

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

Python Enhetstestramverk

För att göra Unit Testing-processen enklare och förbättra kvaliteten på ditt projekt, rekommenderas det Python Enhetstestramverk. Enhetstestningsramverket inkluderar

Python Enhetstestningstekniker

  • PyUnit: PyUnit stöder fixturer, testfall, testsviter och en testlöpare för automatiserad testning av koden. I PyUnit kan du organisera testfall i sviter med samma fixturer
  • Näsa: Nose's inbyggda plugin-program hjälper dig med output capture, kodtäckning, doctests, etc. Nose syntax är ganska enklare och minskar hindren för att skriva tester. Den sträcker sig Python unittest för att göra testningen enklare.
  • Doktest: 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 gav de förväntade resultaten. Användningsfallet för doctest är mindre detaljerat och fångar inga speciella fall. De är användbara som en uttrycksfull dokumentation av det huvudsakliga användningsfallet för en modul och dess komponenter.

Enhetstestning med PyUnit

Pyunit är en Python hamn av JUnit. Som en del av Pyunit finns det fem nyckelklasser i unittest-modulen.

Enhetstestning med PyUnit

  • TestCase-klass: TestCase-klassen bär testrutinerna och levererar krokar för att göra varje rutin och städa upp därefter
  • TestSuite klass: Den fungerar som en insamlingsbehållare, och den kan ha flera testcaseobjekt och flera testsuites-objekt
  • TestLoader klass: Den här klassen laddar testfall och sviter definierade lokalt eller från en extern fil. Den sänder ut 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
  • Klassen Testresultat: Den erbjuder en standardbehållare för testresultaten

Designa ett testfall för Python Testa med PyUnit

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

Designa ett testfall för Python

unittest.TestCase

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

I det första setet finns för- och eftertestkrokarna. Metoden setup() börjar före varje testrutin, teardown() efter rutinen.

Den andra uppsättningen av metoder styr testexekveringen. Båda metoderna tar en meddelandesträng som indata, och båda avbryter ett pågående test. Men skiptest()-metoden 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å testcaseobjektet och testrutinen. Och metoden kortDescription() returnerar docstr-kommentaren vid initieringen av varje testrutin.

Fördelar med att använda Python Enhetstestning

  • 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 konsekvens