Python

Vadnica za Python Unittest

Vadnica za Python Unittest

Enotno testiranje je preskusna metoda, ki se uporablja v programskem inženirstvu za posamezne enote katere koli kode. Uporabniki lahko opravijo posamezne teste, da ugotovijo stanje vira in koliko kode je primerna za uporabo. Na ta način lahko uporabniki preizkusijo kakovost kode.

Testiranje se opravi, ko je proces razvoja končan. Uporabniki lahko začnejo s testiranjem tudi, ko je treba preizkusni skript preveriti na podlagi meril testiranja. Razvijalci naj bi napisali ročne vrste izvorne kode. Na splošno je ročno pisanje kod za preskušanje enot eno grozno opravilo, vendar se v Pythonu izvaja z vgrajeno funkcijo, imenovano unittest.

Unittest

Testiranje v Pythonu izvaja unittest framework. Enotno testiranje omogoča, da je koda varna in enostavna za uporabo tudi v prihodnje. Uporabniki teh primerov običajno ne morejo predvideti, lahko pa jih enostavno rešijo. Unittest je lahko celoten modul, določena funkcija in celoten vmesnik (razred / modul).

Kako napisati enotne teste za svojo kodo?

Če želite napisati preskuse enot za svojo kodo, vedno začnite z najmanjšo enoto, ki jo je mogoče preizkusiti iz celotne kode, nato pa se pomaknite naprej do drugih enot. Na ta način boste preverili, kako najmanjša izbrana enota sodeluje pri izdelavi celotnega testa enote.

Enotno preskusno ogrodje Pythona je bilo oblikovano ob upoštevanju Java-jevega Junita. Ima enake in enake funkcije, kot je enotno testiranje v drugih jezikih. Okvir enotnega testiranja v Pythonu pomaga pri avtomatizacijskem testiranju, nastavitvi skupne rabe, združevanju številnih testov v en velik niz in neodvisnih testih

Primeri:

Zdaj v primeru preverjamo kodo, da bi ugotovili vsoto v kodi Pythona s pomočjo funkcije sum (). Odgovor na to vsoto mora biti 12, kar je pravilno.

>>> uveljavi vsoto ([2, 4, 6]) == 12, "Naj bo enako 12"

Po drugi strani pa, če poskusimo napisati napačno izhodno vrednost, ki je vsota () napačna, rezultati ne bodo uspeli. Vrnil bo AssertionError. Izhod, ki smo ga navedli, je napačen, saj je 12, dejanski izhod pa mora biti 6, zato je vrnil to napako.

>>> uveljavi vsoto ([2, 2, 2]) == 12, "Naj bo enako 12"

Zdaj bomo namesto testiranja na REPL vstavili novo datoteko Python in jo poimenovali test_sum.py

>> def testValue_sum ():
uveljavi vsota ([2, 4, 6]) == 12, "mora biti enako 12"
če je __name__ == "__glavna__":
testValue_sum ()
print ("Vse je bilo pravilno preneseno")

Po pisanju testnega primera lahko dostopate do imenika s test_sum.datoteko in nato vnesite:

$ python test_sum.py

Izhod:

Ko je izhodna vrednost podobna prikazani, bo odobrila pravilno vrednost.

Ustvarimo še eno datoteko za .py za preizkus vsote. Primer, kot je prikazan v kodi in ga lahko uporabimo kot vzorec s kopiranjem:

def testValue_sum ():
uveljavi vsota ([2, 4, 6]) == 12, "mora biti enako 12"
def testValue_sum_tuple ():
uveljavi vsota ((1, 1, 1)) == 6, "mora biti enako 6"
če je __name__ == "__glavna__":
testValue_sum ()
testValue_sum_tuple ()
print ("Vse je bilo pravilno preneseno")

Tokrat bomo datoteko znova poimenovali test_sum.py 

Prvi blok kode je pravilen, drugi blok kode pa je napačen in ima napako, zato bo naš izhod vrnil isto.

Zdaj se bomo vrnili v imenik projekta, kjer smo shranili .datoteko, in nato preizkusite datoteko z naslednjim ukazom:

$ python test_sum.py

Izhod:

Tokrat, ker je imela vhodna koda napako, naj bi v odgovor vrnila napako Assertion.

Primer uporabe unittest:

Zahteve Unittest so, da lahko uporabniki svoje teste razvrstijo v razrede kot različne metode, uporabniki lahko uporabijo vrsto metod uveljavljanja, namesto izjave za uveljavitev pa lahko uporabijo razred TestCase.

Uporabniki lahko primer, obravnavan v prejšnji polovici, pretvorijo v testni primer unittest.

Najprej uvozi knjižnico unitest. Nato morate iz različnih razredov ustvariti TestSum.

Ustvarite novo datoteko za spodnjo kodo:

uvoz unittest
razred TestSum (unittest.TestCase):
def testValue_sum (self):
sebe.assertEqual (vsota ([2, 4, 6]), 12, "Naj bo enako 12")
def testValue_sum_tuple (self):
sebe.assertEqual (sum ((1, 1, 1)), 6, "Naj bo enako 6")
če je __name__ == '__main__':
unittest.glavni ()

Ko izvedete ta ukaz, ima izhod piko. To pomeni uspeh, F pa neuspeh.

Torej, imamo uspeh in še en neuspeh.

Izhod:

Pisanje prvega testa:

Ustvarite novo mapo projekta in nato novo mapo, imenovali jo bomo sum_file. V njej ustvarite datoteko in jo poimenujte __init__.py.  Mapa projekta naj bo taka:

projekt /

└── vsota_datoteke /
└── __init__.py

Potem morate odpreti my_sum / __ init__.py in ustvarite novo vsoto funkcije (). Številne vrednosti (seznam, nabor ali nabor) bo mogoče ponoviti:

def vsota (arg):
total_ValueCalculated = 0
za val v arg:
total_ValueCalculated + = val
vrni total_ValueCalculated

Nato morate ustvariti datoteko preskus mapa. Začnite s pisanjem testov in ustvarite testno datoteko z imenom testFile.py. Če želite uvoziti aplikacijo in jo morate preizkusiti, položite datoteko testFile.py nad vašo mapo paketa. Splošno bo videti vaš imenik:

projekt /

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

Kot smo že omenili za preizkus kode, lahko v oknu terminala / ukazni vrstici uporabite naslednji ukaz:

$ python -m unittest test

Zaključek

Članek obravnava postopek enote testiranja v Pythonu. Testiranje je ena od uporabnih lastnosti programskega inženirstva, ki lahko kode razdeli na manjše dele in jih nato preizkusi enega za drugim. Uporabniki lahko tudi zberejo celotne testne vzorce / kode enot v eno veliko zbirko. Unittest je ena od funkcij, ki se v Pythonu uporablja za enostavno uporabo testiranja.

HD Remastered Games za Linux, ki prej še niso izdale Linuxa
Mnogi razvijalci iger in založniki pripravijo HD remaster starih iger, da podaljšajo življenjsko dobo franšize, zato oboževalci zahtevajo združljivost...
Kako uporabljati AutoKey za avtomatizacijo iger Linux
AutoKey je namizni pripomoček za avtomatizacijo za Linux in X11, programiran v Python 3, GTK in Qt. Z njegovo funkcijo skriptiranja in MACRO lahko avt...
Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...