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

Inhoudsopgave:

Anonim

Wat is het testen van eenheden?

Unit Testing in Python wordt gedaan om bugs vroeg in de ontwikkelingsfase van de applicatie te identificeren, wanneer bugs minder terugkerend zijn en minder duur om op te lossen.

Een unit test is een scripted code level test ontworpen in Python om een ​​kleine "eenheid" functionaliteit te verifiëren. Unit-test 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 een afhankelijke code. Ontwikkelaars kunnen technieken zoals stubs en mocks gebruiken om code in "eenheden" te scheiden en testen op unit-niveau op de afzonderlijke stukken uit te voeren.

  • Test-Driven Development TDD: Unit Testing moet samen met de Python worden gedaan, en daarvoor gebruiken ontwikkelaars de Test-Driven Development-methode. In de TDD-methode ontwerp je eerst Python Unit-tests en pas daarna ga je door met het schrijven van de code die deze functie zal implementeren.
  • Stubs en Mocks: het zijn twee hoofdtechnieken die nepmethoden simuleren die worden getest. Een stub wordt gebruikt om een ​​bepaalde afhankelijkheid in te vullen die nodig is om de unit-test correct te laten werken. Een mock aan de andere kant is een nep-object dat de tests uitvoert waarin we beweren.

    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 gemakkelijker te maken en de kwaliteit van uw project te verbeteren, wordt het Python Unit Testing Framework aanbevolen. Het Unit Testing-framework omvat

  • PyUnit: PyUnit ondersteunt fixtures, testcases, testsuites en een testrunner voor het geautomatiseerd testen van de code. In PyUnit kunt u testcases indelen in suites met dezelfde armaturen
  • Neus: de ingebouwde plug-ins van Nose helpen je bij het vastleggen van de output, codedekking, doctests, enz. De syntaxis van de neus is vrij eenvoudiger en vermindert de belemmeringen voor het schrijven van tests. Het breidt de eenheid van Python uit om het testen gemakkelijker te maken.
  • Doctest: Doctest-testscript gaat in docstring met een kleine functie onderaan het bestand. Met Doctest kunt u uw code testen door voorbeelden uit de documentatie uit te voeren en te controleren of ze de verwachte resultaten hebben opgeleverd. De use-case van doctest is minder gedetailleerd en bevat geen speciale gevallen. Ze zijn nuttig als een expressieve documentatie van het belangrijkste gebruiksscenario van een module en zijn componenten.

Unit testen met PyUnit

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

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

Een testcase ontwerpen voor Python-tests met PyUnit

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

unittest.TestCase

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

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

De tweede set methoden bestuurt de testuitvoering. Beide methoden gebruiken een berichttekenreeks als invoer en beide annuleren 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 () geeft een string terug die bestaat uit de naam van het testcase-object en van de testroutine. En de methode shortDescription () retourneert de docstr-opmerking aan het begin van elke testroutine.

Voordelen van het gebruik van Python Unit-testen

  • Het helpt u om vroeg in de ontwikkelingscyclus bugs op te sporen
  • Het helpt je om betere programma's te schrijven
  • Het synchroniseert gemakkelijk met andere testmethoden en tools
  • Het zal veel minder bugs bevatten
  • Het is gemakkelijker om in de toekomst aan te passen met veel minder gevolgen