Python

Python Unittest-zelfstudie

Python Unittest-zelfstudie

Unit testing is een testmethode die wordt gebruikt in software-engineering voor individuele eenheden van elke code any. Gebruikers kunnen de individuele tests uitvoeren om de status van de bron te bepalen en in hoeverre de code geschikt is om te worden gebruikt. Op deze manier kunnen gebruikers de codekwaliteit testen.

Het testen wordt gedaan zodra het ontwikkelingsproces is voltooid. Gebruikers kunnen ook beginnen met testen wanneer het testscript moet worden geverifieerd op basis van de testcriteria. Van ontwikkelaars wordt verwacht dat ze de handmatige typen van de broncode schrijven. Over het algemeen is het handmatig schrijven van unit-testcodes een hectische taak, maar in Python wordt dit gedaan met behulp van een ingebouwde functie genaamd unittest.

Hoofdstuk toets

Het testen in Python wordt gedaan door unittest framework. Unit testing maakt de code ook in de toekomst veilig en gebruiksvriendelijk. Gebruikers kunnen deze gevallen meestal niet voorspellen, maar kunnen ze gemakkelijk aanpakken. Unittest kan de hele module, een bepaalde functie en een hele interface (klasse/module) zijn.

Hoe u eenheidstests voor uw code schrijft?

Om de eenheidstests voor uw code te schrijven, begint u altijd met de kleinste eenheid die uit uw hele code kan worden getest en gaat u vervolgens verder met andere eenheden. Op deze manier controleer je hoe de kleinste gekozen eenheid op elkaar inwerkt om een ​​test voor hele eenheden te bouwen.

Het unit-testraamwerk van Python is gevormd door rekening te houden met Java's Junit. Het heeft dezelfde functies als het testen van eenheden in andere verschillende soorten talen. Het raamwerk van unit-testing in Python helpt bij het testen van automatisering, het opzetten van delen, het samenvoegen van veel tests in één grote set en onafhankelijke tests

Voorbeelden:

In het voorbeeld controleren we nu de code om de som in Python-code te achterhalen met behulp van de functie sum()(. Het antwoord op deze som moet 12 zijn, wat correct is.

>>> assert sum([2, 4, 6]) == 12, "Moet gelijk zijn aan 12"

Aan de andere kant, als we proberen een verkeerde uitvoerwaarde te schrijven, waarvan de som () onjuist is, zullen de resultaten mislukken. Het zal een AssertionError retourneren. De door ons opgegeven uitvoer is verkeerd, dat is 12, en de werkelijke uitvoer moet 6 zijn, daarom heeft het deze fout geretourneerd.

>>> assert sum([2, 2, 2]) == 12, "Moet gelijk zijn aan 12"

Nu, in plaats van te testen op de REPL, zullen we een nieuw Python-bestand plaatsen en het een naam geven test_sum.py

>> def testValue_sum():
assert sum([2, 4, 6]) == 12, "Moet gelijk zijn aan 12"
if __name__ == "__main__":
testValue_sum()
print("Alles is correct doorgegeven")

Nadat u de testcase hebt geschreven, hebt u toegang tot de map met de test_sum.py-bestand en typ vervolgens:

$ python test_sum.py

Uitgang::

De uitvoerwaarde, wanneer deze vergelijkbaar is met de weergegeven waarde, zal de juiste waarde goedkeuren.

Laten we een ander bestand maken voor .py om de som te testen. Het voorbeeld zoals weergegeven in de code en kan als voorbeeld worden gebruikt door te kopiëren:

def testValue_sum():
assert sum([2, 4, 6]) == 12, "Moet gelijk zijn aan 12"
def testValue_sum_tuple():
assert sum((1, 1, 1)) == 6, "Moet gelijk zijn aan 6"
if __name__ == "__main__":
testValue_sum()
testValue_sum_tuple()
print("Alles is correct doorgegeven")

Deze keer zullen we het bestand opnieuw een naam geven test_sum.py 

Het eerste codeblok is correct, terwijl het tweede codeblok fout is en een fout bevat, dus onze uitvoer zal hetzelfde retourneren.

Nu gaan we terug naar de directory van het project, waar we de .py-bestand, en test vervolgens het bestand met de volgende opdracht:

$ python test_sum.py

Uitgang::

Aangezien de invoercode deze keer een fout bevatte, wordt verwacht dat deze als reactie de bevestigingsfout retourneert.

Voorbeeld van het gebruik van unittest:

Unittest-vereisten zijn dat gebruikers hun tests als verschillende methoden in klassen kunnen plaatsen, gebruikers een reeks assertion-methoden kunnen gebruiken en de TestCase-klasse kan worden gebruikt in plaats van de assert-instructie.

Gebruikers kunnen het in de vorige helft besproken voorbeeld omzetten in een unittest-testcase.

Importeer eerst unitest-bibliotheek. Vervolgens moet je een TestSum maken van verschillende klassen.

Maak een nieuw bestand voor de hieronder besproken code:

eenheidstest importeren
klasse TestSum (eenheidstest.Testcase):
def testValue_sum(zelf):
zelf.assertEqual(sum([2, 4, 6]), 12, "Moet gelijk zijn aan 12")
def testValue_sum_tuple(zelf):
zelf.assertEqual(sum((1, 1, 1)), 6, "Moet gelijk zijn aan 6")
if __name__ == '__main__':
hoofdstuk toets.hoofd()

Nadat u deze opdracht hebt uitgevoerd, heeft de uitvoer een punt. Dit betekent succes en een F betekent een mislukking.

Dus we hebben succes en een ander is een mislukking.

Uitgang::

Het schrijven van de eerste test:

Maak een nieuwe projectmap aan en maak vervolgens een nieuwe map aan, we zullen deze sum_file noemen. Maak er een bestand in en noem het __init__.py.  Maak de projectmap zoals deze:

project/

└── sum_file/
└── __init__.py

Dan moet je my_sum/__init__ openen.py en maak een nieuwe functie sum(). Het is itereerbaar (een lijst, tuple of set) om veel waarden toe te voegen:

def som (arg):
total_ValueCalculated = 0
voor val in arg:
total_ValueCalculated += waarde
return total_ValueCalculated

Vervolgens moet u een maken test het dossier. Begin met het schrijven van tests en maak een testbestand met de naam testFile.py. Om de toepassing te importeren, en deze moet worden getest, plaatst u het bestand testFile.py boven je map van het pakket. Het volgende zal het algemene uiterlijk van uw directory zijn:

project/

├── sum_file/
│ └── __init__.py
|
└── testFile.py

Zoals eerder besproken om de code te testen, kunt u de volgende opdracht in het terminalvenster/opdrachtregel gebruiken:

$ python -m unittest-test

Conclusie

Het artikel bespreekt het proces van unit testing in Python. Testen is een van de handige functies van software-engineering die in staat is om de codes in kleinere stukjes te verdelen en ze vervolgens een voor een uit te proberen. Gebruikers kunnen ook de volledige testmonsters/eenheidscodes in één grote verzameling verzamelen. Unittest is een functie die in Python wordt gebruikt om testen eenvoudig te maken.

Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...
OpenTTD versus Simutrans
Je eigen transportsimulatie maken kan leuk, ontspannend en buitengewoon aanlokkelijk zijn. Daarom moet je ervoor zorgen dat je zoveel mogelijk spellen...