Python

Python Unittest tutorial

Python Unittest tutorial

Enhedstest er en testmetode, der anvendes i softwareteknik til individuelle enheder af enhver kode. Brugere kan sætte de enkelte tests for at bestemme kildens status, og hvor meget koden er egnet til at blive brugt. På denne måde kan brugere teste kodekvaliteten.

Test udføres, når udviklingsprocessen er afsluttet. Brugere kan også begynde at teste, når testscriptet skal verificeres baseret på testkriterierne. Udviklere forventes at skrive kildekodens manuelle typer. Generelt er manuel skrivning af enhedstestkoder en hektisk opgave, men i Python gøres det ved hjælp af en indbygget funktion kaldet unittest.

Unittest

Testningen i Python udføres ved en unittest ramme. Enhedstest gør koden sikker og nem at bruge også i fremtiden. Brugere kan normalt ikke forudsige disse tilfælde, men kan let adressere dem. Unittest kan enten være hele modulet, en bestemt funktion og en hel grænseflade (klasse / modul).

Sådan skriver du enhedstest til din kode?

For at skrive enhedstestene til din kode skal du altid begynde med den mindste enhed, der kan testes fra hele din kode, og derefter flytte videre til andre enheder. På denne måde vil du kontrollere, hvordan den mindste valgte enhed interagerer for at opbygge en hel enhedstest.

Enhedstestningsrammen for Python blev dannet ved at tage højde for Java's Junit. Det har samme funktioner som test af enheder udføres på andre forskellige sprogtyper. Rammen om enhedstest i Python hjælper med automatiseringstest, opsætning af deling, sammenlægning af mange tests i et stort sæt og uafhængige tests

Eksempler:

Nu i eksemplet kontrollerer vi koden for at finde ud af summen i Python-kode ved hjælp af funktionen sum (). Svaret på denne opsummering skal være 12, hvilket er korrekt.

>>> hævde sum ([2, 4, 6]) == 12, "Skal være lig med 12"

På den anden side, hvis vi prøver at skrive en forkert outputværdi, som summen () er forkert, vil resultaterne mislykkes. Det returnerer en AssertionError. Den output, der er angivet af os, er forkert, det er 12, og den aktuelle output skal være 6, derfor returnerede den denne fejl.

>>> hævde sum ([2, 2, 2]) == 12, "Skal være lig med 12"

Nu, i stedet for at teste på REPL, indsætter vi en ny Python-fil og navngiver den test_sum.py

>> def testValue_sum ():
hævde sum ([2, 4, 6]) == 12, "Skal være lig med 12"
hvis __name__ == "__main__":
testValue_sum ()
print ("Alt er videregivet korrekt")

Efter at have skrevet testsagen kan du få adgang til det bibliotek, der har test_sum.py-fil, og skriv derefter:

$ python test_sum.py

Produktion:

Outputværdien, når den svarer til den viste, godkender den korrekte værdi.

Lad os oprette en anden fil til .py for at teste summen. Eksemplet som vist i koden og kan bruges som en prøve ved at kopiere:

def testValue_sum ():
hævde sum ([2, 4, 6]) == 12, "Skal være lig med 12"
def testValue_sum_tuple ():
hævde sum ((1, 1, 1)) == 6, "Skal være lig med 6"
hvis __name__ == "__main__":
testValue_sum ()
testValue_sum_tuple ()
print ("Alt er videregivet korrekt")

Denne gang navngiver vi filen igen test_sum.py 

Første kodeblok er korrekt, mens den anden kodeblok er forkert og har en fejl, så vores output returnerer det samme.

Nu vender vi tilbage til projektmappen, hvor vi gemte .py-fil, og test derefter filen ved hjælp af følgende kommando:

$ python test_sum.py

Produktion:

Denne gang, da inputkoden havde en fejl, forventes den at returnere påstandsfejlen som svar.

Eksempel på brug af unittest:

Unittest krav er, at brugerne kan sætte deres tests i klasser som forskellige metoder, brugere kan bruge en række påstandsmetoder, og TestCase klasse kan bruges i stedet for påstanden.

Brugere kan konvertere eksemplet, der blev diskuteret i forrige halvdel, til en unittest test case.

Først skal du importere enhedsbibliotek. Dernæst skal du oprette et TestSum fra forskellige klasser.

Opret en ny fil til koden beskrevet nedenfor:

importere unittest
klasse TestSum (unittest.Test sag):
def testValue_sum (selv):
selv.assertEqual (sum ([2, 4, 6]), 12, "Skal være lig med 12")
def testValue_sum_tuple (selv):
selv.assertEqual (sum ((1, 1, 1)), 6, "Bør være lig med 6")
hvis __name__ == '__main__':
unittest.hoved ()

Når du har udført denne kommando, har output en prik. Dette betyder succes og et F betyder en fiasko.

Så vi har succes, og en anden er en fiasko.

Produktion:

Skrivning af den første test:

Opret en ny projektmappe, og opret derefter en ny mappe, vi kalder den sum_file. Inde i den skal du oprette en fil og navngive den, __init__.py.  Lav projektmappen sådan:

projekt/

└── sum_file /
└── __init__.py

Så skal du åbne my_sum / __ init__.py og opret en ny funktionssum (). Det kan gentages (en liste, en dobbelt eller et sæt) for at tilføje mange værdier:

def sum (arg):
total_ValueCalculated = 0
for val i arg:
total_ValueCalculated + = val
return total_ValueCalculated

Dernæst skal du oprette en prøve fil. Start med at skrive tests, og opret en testfil, der hedder testFile.py. For at importere applikationen, og den skal testes, skal du placere filen testFile.py over din mappe i pakken. Følgende vil være det generelle udseende af din mappe:

projekt/

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

Som tidligere diskuteret for at teste koden kan du bruge følgende kommando i terminalvinduet / kommandolinjen:

$ python -m unittest test

Konklusion

Artiklen diskuterer processen med enhedstest i Python. Test er en af ​​de nyttige funktioner i softwareteknik, der er i stand til at opdele koderne i mindre stykker og derefter prøve dem en efter en. Brugere kan også kompilere hele testprøver / enhedskoder i en stor samling. Unittest er en funktion, der bruges i Python til nem brug af test.

Mus Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Sådan bruges Xdotool til at stimulere museklik og tastetryk i Linux
Xdotool er et gratis og open source kommandolinjeværktøj til simulering af museklik og tastetryk. Denne artikel dækker en kort vejledning om brug af x...
Mus Top 5 ergonomiske computermusprodukter til Linux
Top 5 ergonomiske computermusprodukter til Linux
Forårsager langvarig brug af computeren smerter i dit håndled eller fingre? Lider du af stive led og er konstant nødt til at ryste hænderne? Føler du ...
Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...