Python

Python Unittest apmācība

Python Unittest apmācība

Vienības testēšana ir testēšanas metode, ko programmatūras izstrādē izmanto jebkura koda atsevišķām vienībām. Lietotāji var veikt atsevišķus testus, lai noteiktu avota statusu un cik kods ir piemērots izmantošanai. Tādējādi lietotāji var pārbaudīt koda kvalitāti.

Testēšana tiek veikta, kad izstrādes process ir pabeigts. Lietotāji var sākt testēšanu arī tad, kad jāpārbauda testa skripts, pamatojoties uz testēšanas kritērijiem. Paredzams, ka izstrādātāji uzrakstīs avota koda manuālos veidus. Parasti vienības testēšanas kodu manuāla rakstīšana ir drudžains uzdevums, bet Python tas tiek darīts, izmantojot iebūvēto funkciju, ko sauc par unittest.

Unittest

Testēšana Python tiek veikta, izmantojot vienoto sistēmu. Vienības testēšana padara kodu drošu un ērti lietojamu arī turpmāk. Lietotāji parasti nevar paredzēt šos gadījumus, bet var tos viegli novērst. Unittest var būt vai nu viss modulis, konkrēta funkcija un viss interfeiss (klase / modulis).

Kā uzrakstīt koda vienības testus?

Lai uzrakstītu koda vienību testus, vienmēr sāciet ar mazāko vienību, kuru var pārbaudīt, izmantojot visu kodu, pēc tam pārejiet tālāk uz citām vienībām. Tādā veidā jūs pārbaudīsit, kā mijiedarbojas mazākā izvēlētā vienība, lai izveidotu visu vienības testu.

Python vienības testēšanas sistēma tika izveidota, ņemot vērā java Junit. Tam ir tādas pašas funkcijas kā vienības testēšana tiek veikta citās dažāda veida valodās. Vienības testēšanas sistēma Python palīdz automatizācijas testēšanā, koplietošanas iestatīšanā, daudzu testu apvienošanā vienā lielā komplektā un neatkarīgos testos

Piemēri:

Tagad piemērā mēs pārbaudām kodu, lai noskaidrotu summu Python kodā, izmantojot funkciju summa (). Atbildei uz šo summēšanu jābūt 12, kas ir pareizi.

>>> apgalvojuma summa ([2, 4, 6]) == 12, "Jābūt vienādai ar 12"

No otras puses, ja mēs mēģināsim uzrakstīt nepareizu izvades vērtību, kuras summa () nav pareiza, rezultāti neizdosies. Tas atgriezīs AssertionError. Mūsu norādītā izeja ir nepareiza, tas ir 12, un faktiskajai izejai jābūt 6, tāpēc tā atgrieza šo kļūdu.

>>> apgalvojuma summa ([2, 2, 2]) == 12, "Jābūt vienādai ar 12"

Tā vietā, lai pārbaudītu REPL, mēs ievietosim jaunu Python failu un nosauksim to test_sum.py

>> def testValue_sum ():
apgalvot summu ([2, 4, 6]) == 12, "Jābūt vienādai ar 12"
ja __nosaukums == "__main__":
testValue_sum ()
drukāt ("Viss ir nodots pareizi")

Pēc testa gadījuma uzrakstīšanas jūs varat piekļūt direktorijai, kurā ir test_sum.py failu un pēc tam ierakstiet:

$ python test_sum.py

Rezultāts:

Izvades vērtība, ja tā ir līdzīga parādītajai, apstiprinās pareizo vērtību.

Ļaujiet mums izveidot citu failu domēnam .py lai pārbaudītu summu. Kodā parādītais piemērs, ko var izmantot kā paraugu, kopējot:

def testValue_sum ():
apgalvot summu ([2, 4, 6]) == 12, "Jābūt vienādai ar 12"
def testValue_sum_tuple ():
apgalvot summu ((1, 1, 1)) == 6, "Jābūt vienādai ar 6"
ja __nosaukums == "__main__":
testValue_sum ()
testValue_sum_tuple ()
drukāt ("Viss ir nodots pareizi")

Šoreiz mēs vēlreiz nosauksim failu test_sum.py 

Pirmais koda bloks ir pareizs, savukārt otrais koda bloks ir nepareizs un tajā ir kļūda, tāpēc mūsu izeja atgriezīs to pašu.

Tagad mēs atgriezīsimies projekta direktorijā, kur saglabājām .py fails, un pēc tam pārbaudiet failu, izmantojot šādu komandu:

$ python test_sum.py

Rezultāts:

Šoreiz, tā kā ievades kodā bija kļūda, sagaidāms, ka atbildē tiks atgriezta apgalvojuma kļūda.

Unittest izmantošanas piemērs:

Nepareizākās prasības ir tādas, ka lietotāji savus testus var iedalīt klasēs kā dažādas metodes, lietotāji var izmantot apgalvojumu metožu sēriju, un apgalvojuma apgalvojuma vietā var izmantot TestCase klasi.

Lietotāji var pārvērst iepriekšējā pusē apspriesto piemēru par vienīgāko testa gadījumu.

Pirmkārt, importējiet vienoto bibliotēku. Tālāk jums jāizveido TestSum no dažādām klasēm.

Izveidojiet jaunu failu zemāk apskatītajam kodam:

imports vienots
klases TestSum (vienotais.TestCase):
def testValue_sum (pats):
pats.assertEqual (summa ([2, 4, 6]), 12, "Jābūt vienādai ar 12")
def testValue_sum_tuple (pats):
pats.assertEqual (summa ((1, 1, 1)), 6, "Jābūt vienādai ar 6")
ja __nosaukums == '__main__':
vienoti.galvenais ()

Kad esat izpildījis šo komandu, izvadei ir punkts. Tas nozīmē panākumus un F nozīmē neveiksmi.

Tātad, mums ir panākumi, un vēl viens ir neveiksme.

Rezultāts:

Pirmā testa rakstīšana:

Izveidojiet jaunu projekta mapi un pēc tam izveidojiet jaunu mapi, mēs to sauksim par sum_file. Tajā izveidojiet failu un nosauciet to __init__.py.  Izveidojiet šāda projekta mapi:

projekts /

└── sum_file /
└── __init__.py

Tad jums jāatver my_sum / __ init__.py un izveido jaunu funkciju summu (). Būs atkārtojams (saraksts, kopa vai kopa), lai pievienotu daudzas vērtības:

def summa (arg):
total_ValueCalculated = 0
par val in arg:
total_ValueCalculated + = val
return total_ValueCalculated

Tālāk jums jāizveido pārbaude failu. Sāciet ar testa rakstīšanu un izveidojiet testa failu ar nosaukumu testFile.py. Lai importētu lietojumprogrammu, un tā ir jāpārbauda, ​​ievietojiet failu testFile.py virs pakotnes mapes. Tālāk būs jūsu direktorija kopējais izskats:

projekts /

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

Kā jau iepriekš tika runāts, lai pārbaudītu kodu, termināļa logā / komandrindā varat izmantot šādu komandu:

$ python -m vienotais tests

Secinājums

Rakstā ir apspriests vienības testēšanas process Python. Testēšana ir viena no programmatūras inženierijas noderīgajām iezīmēm, kas spēj kodus sadalīt mazākos gabalos un pēc tam tos izmēģināt pa vienam. Lietotāji var arī apkopot visus testa paraugus / vienības kodus vienā lielā kolekcijā. Unittest ir viena funkcija, ko Python izmanto, lai ērti izmantotu testēšanu.

5 labākie ergonomiskie datoru peles izstrādājumi Linux
Vai ilgstoša datora lietošana izraisa sāpes plaukstas locītavā vai pirkstos? Vai jūs ciešat no stīvām locītavām un jums pastāvīgi ir jāspiež rokas? Va...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...