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

Sammanfatta detta inlรคgg med: