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.pyIzhod:
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 unittestrazred 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 testZaključ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.