PyUnit-zelfstudie: Python Unit Testing Framework (met voorbeeld)

Wat is unittesten?

Testen van een eenheid in Python wordt gedaan om bugs vroeg in de ontwikkelingsfase van de applicatie te identificeren, wanneer bugs minder terugkerend zijn en goedkoper om te repareren.

Een unit-test is een test op codeniveau op scriptniveau, ontworpen in Python om een ​​kleine “eenheid” aan functionaliteit te verifiëren. Unittest is een objectgeoriënteerd raamwerk gebaseerd op testopstellingen.

Testtechnieken voor Python-eenheden

Python Unit Testing omvat voornamelijk het testen van een bepaalde module zonder toegang te krijgen tot enige afhankelijke code. Ontwikkelaars kunnen technieken als stubs en mocks gebruiken om code in ‘eenheden’ te verdelen en testen op unit-niveau uit te voeren op de afzonderlijke stukken.

  • Testgestuurde ontwikkeling TDD: Unit Testing moet samen met Python worden uitgevoerd, en daarvoor gebruiken ontwikkelaars de Test-Driven Development-methode. Bij de TDD-methode ontwerp je eerst Python Unit-tests en pas daarna ga je door met het schrijven van de code die deze functie implementeert.
  • Stubs en Mocks: Het zijn twee hoofdtechnieken die nepmethoden simuleren die worden getest. A Stomp wordt gebruikt om een ​​afhankelijkheid in te vullen die nodig is om de unittest correct uit te voeren. A Bespotten aan de andere kant is het een nepobject dat de tests uitvoert waar we beweringen in doen.

    De bedoelingen van beide methoden zijn hetzelfde om het testen van alle afhankelijkheden van een klasse of functie te elimineren.

Kader voor het testen van Python-eenheden

Om het Unit Testing-proces eenvoudiger te maken en de kwaliteit van uw project te verbeteren, wordt het Python Unit Testing Framework aanbevolen. Het Unit Testing-framework omvat

Testtechnieken voor Python-eenheden

  • PyEenheid: PyUnit ondersteunt armaturen, testcases, testsuites en een testrunner voor het geautomatiseerd testen van de code. In PyUnit kunt u testgevallen indelen in suites met dezelfde armaturen
  • Neus: De ingebouwde plug-ins van Nose helpen je bij het vastleggen van uitvoer, codedekking, doctests, enz. De syntaxis van Nose is vrij eenvoudiger en vermindert de barrières voor het schrijven van tests. Het breidt de Python-unittest uit om het testen eenvoudiger te maken.
  • Doctest : Het Doctest-testscript wordt in docstring geplaatst met een kleine functie onderaan het bestand. Met Doctest kunt u uw code testen door voorbeelden uit de documentatie uit te voeren en te verifiëren dat deze de verwachte resultaten opleveren. De use-case van doctest is minder gedetailleerd en omvat geen speciale gevallen. Ze zijn nuttig als expressieve documentatie van het belangrijkste gebruiksscenario van een module en zijn componenten.

Eenheidstesten met PyUnit

Pyunit is een Python-poort van JUnit. Als onderdeel van Pyunit zijn er in de unittest-module vijf sleutelklassen.

Eenheidstesten met PyUnit

  • TestCase-klasse: De klasse TestCase draagt ​​de testroutines en levert haken voor het maken van elke routine en het daarna opruimen
  • TestSuite-klasse: Het fungeert als verzamelcontainer en kan meerdere testcase-objecten en meerdere testsuites-objecten bevatten
  • TestLoader-klasse: Deze klasse laadt testgevallen en suites die lokaal of vanuit een extern bestand zijn gedefinieerd. Het zendt een testsuite-object uit dat deze suites en cases bezit
  • TextTestRunner-klasse: Om de tests uit te voeren, beschikt het over een standaardplatform om de tests uit te voeren
  • De TestResults-klasse: Het biedt een standaardcontainer voor de testresultaten

Een testcase ontwerpen voor Python-testen met PyUnit

Een unit-test biedt een basisklasse, testcase, die kan worden gebruikt om nieuwe testgevallen te maken. Voor het ontwerpen van de testcase zijn er drie sets methoden gebruikt

Het ontwerpen van een testcase voor Python

unittest.TestCase

setUp()
teardown()

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

id():string
shortDescription():string

In de eerste set zitten de pre- en posttesthaken. De methode setup() begint vóór elke testroutine, de teardown() na de routine.

De tweede reeks methoden regelt de uitvoering van de test. Beide methoden nemen een berichtenreeks als invoer en annuleren beide een lopende test. Maar de methode skiptest() breekt de huidige test af, terwijl de methode fail() deze volledig mislukt.

De laatste of derde methode helpt bij het bepalen van de test. De methode id() retourneert een string bestaande uit de naam van het testcaseobject en van de testroutine. En de methode shortDescription() retourneert het docstr-commentaar bij het starten van elke testroutine.

Voordelen van het gebruik van Python Unit-testen

  • Het helpt u om bugs vroeg in de ontwikkelingscyclus te detecteren
  • Het helpt je om betere programma's te schrijven
  • It syncHet is eenvoudig te combineren met andere testmethoden en hulpmiddelen
  • Het zal veel minder bugs bevatten
  • Het is gemakkelijker om in de toekomst wijzigingen aan te brengen, met minder gevolgen