Python

Výukový program pre Python Unittest

Výukový program pre Python Unittest

Testovanie jednotiek je testovacia metóda používaná v softvérovom inžinierstve pre jednotlivé jednotky ľubovoľného kódu. Používatelia môžu pomocou jednotlivých testov zistiť stav zdroja a koľko kódu je vhodné použiť. Týmto spôsobom môžu používatelia testovať kvalitu kódu.

Testovanie sa vykonáva po dokončení procesu vývoja. Používatelia môžu tiež začať testovať, keď sa má testovací skript overiť na základe kritérií testovania. Od vývojárov sa očakáva, že budú písať manuálne typy zdrojového kódu. Ručné písanie kódov na testovanie jednotiek je vo všeobecnosti hektická úloha, ale v Pythone sa to deje pomocou zabudovanej funkcie zvanej unittest.

Unittest

Testovanie v Pythone sa robí frameworkom unittest. Vďaka testovaniu jednotiek je kód bezpečný a ľahko použiteľný aj v budúcnosti. Používatelia zvyčajne nemôžu tieto prípady predvídať, ale môžu ich ľahko vyriešiť. Unittest môže byť buď celý modul, konkrétna funkcia a celé rozhranie (trieda / modul).

Ako písať jednotkové testy pre váš kód?

Ak chcete pre svoj kód napísať jednotkové testy, začnite vždy najmenšou jednotkou, ktorú je možné testovať z celého kódu, a potom prejdite ďalej k ďalším jednotkám. Týmto spôsobom skontrolujete, ako interaguje najmenšia vybraná jednotka s testom celej jednotky.

Jednotkový testovací rámec Pythonu bol vytvorený zohľadnením java jitu. Má rovnaké rovnaké vlastnosti ako testovanie jednotiek v iných rôznych druhoch jazykov. Rámec testovania jednotiek v Pythone pomáha pri automatizovanom testovaní, nastavení zdieľania, agregácii mnohých testov do jednej veľkej sady a nezávislých testoch

Príklady:

Teraz v príklade kontrolujeme kód, aby sme pomocou funkcie sum () zistili súčet v kóde Python. Odpoveď na tento súčet musí byť 12, čo je správne.

>>> uplatniť súčet ([2, 4, 6]) == 12, „Malo by sa rovnať 12“

Na druhej strane, ak sa pokúsime napísať nesprávnu výstupnú hodnotu, ktorej súčet () je nesprávny, výsledky zlyhajú. Vráti chybu AssertionError. Nami uvedený výstup je nesprávny, ktorý je 12, a skutočný výstup musí byť 6, preto vrátil túto chybu.

>>> uplatniť súčet ([2, 2, 2]) == 12, „Malo by sa rovnať 12“

Teraz namiesto testovania na REPL vložíme nový súbor Python a pomenujeme ho test_sum.py

>> def testValue_sum ():
uplatniť súčet ([2, 4, 6]) == 12, „Malo by sa rovnať 12“
ak __name__ == "__main__":
testValue_sum ()
print ("Všetko prebehlo správne")

Po napísaní testovacieho prípadu môžete prejsť do adresára, ktorý má test_sum.súbor py a zadajte:

$ python test_sum.py

Výkon:

Ak je výstupná hodnota podobná zobrazenej, bude schválená so správnou hodnotou.

Vytvorme ďalší súbor pre .py na otestovanie sumy. Príklad zobrazený v kóde a je možné ho použiť ako ukážku skopírovaním:

def testValue_sum ():
uplatniť súčet ([2, 4, 6]) == 12, „Malo by sa rovnať 12“
def testValue_sum_tuple ():
uplatniť súčet ((1, 1, 1)) == 6, „Malo by sa rovnať 6“
ak __name__ == "__main__":
testValue_sum ()
testValue_sum_tuple ()
tlač („Všetko prešlo správne“)

Tentokrát súbor opäť pomenujeme test_sum.py 

Prvý blok kódu je správny, zatiaľ čo druhý blok kódu je nesprávny a obsahuje chybu, takže náš výstup sa vráti rovnako.

Teraz sa vrátime do adresára projektu, kde sme uložili súbor .súbor py, a potom súbor otestujte pomocou nasledujúceho príkazu:

$ python test_sum.py

Výkon:

Tentokrát, pretože sa vo vstupnom kóde vyskytla chyba, sa očakáva, že vráti chybu Assertion ako odpoveď.

Príklad použitia unittestu:

Požiadavky Unittestu spočívajú v tom, že používatelia môžu svoje testy vkladať do tried ako rôzne metódy, používatelia môžu používať celý rad metód tvrdenia a namiesto príkazu assert sa dá použiť trieda TestCase.

Používatelia môžu previesť príklad opísaný v predchádzajúcej polovici na testovací prípad unittest.

Najskôr importujte najjednoduchšiu knižnicu. Ďalej musíte vytvoriť TestSum z rôznych tried.

Vytvorte nový súbor pre kód popísaný nižšie:

import unittest
trieda TestSum (unittest.Testovacia situácia):
def testValue_sum (self):
ja.assertEqual (súčet ([2, 4, 6]), 12, "Malo by sa rovnať 12")
def testValue_sum_tuple (vlastné):
ja.assertEqual (sum ((1, 1, 1)), 6, "Malo by sa rovnať 6")
ak __name__ == '__main__':
unittest.hlavný()

Po vykonaní tohto príkazu má výstup bodku. To znamená úspech a F znamená zlyhanie.

Takže máme úspech a ďalším je zlyhanie.

Výkon:

Písanie prvého testu:

Vytvorte nový priečinok projektu a potom vytvorte nový priečinok, nazvime ho sum_file. V ňom vytvorte súbor a pomenujte ho __init__.py.  Vytvorte priečinok projektu takto:

projekt /

└── sum_file /
└── __init__.py

Potom musíte otvoriť môj_sum / __ init__.py a vytvoriť nový funkčný súčet (). Bude iterovateľné (zoznam, n-tica alebo sada) na pridanie mnohých hodnôt:

def súčet (arg):
total_ValueCalculated = 0
pre val v arg:
total_ValueCalculated + = val
return total_ValueCalculated

Ďalej musíte vytvoriť a test spis. Začnite písaním testov a vytvorte testovací súbor s názvom testFile.py. Ak chcete importovať aplikáciu, ktorá musí byť otestovaná, vložte súbor testFile.py nad adresárom balíka. Nasledujúci bude celkový vzhľad vášho adresára:

projekt /

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

Ako už bolo spomenuté vyššie na otestovanie kódu, v terminálovom okne / príkazovom riadku môžete použiť nasledujúci príkaz:

$ python -m test unittest

Záver

Článok pojednáva o procese testovania jednotiek v Pythone. Testovanie je jednou z užitočných vlastností softvérového inžinierstva, ktoré je schopné rozdeliť kódy na menšie časti a potom ich jednotlivo vyskúšať. Používatelia môžu tiež zhromaždiť celé testovacie vzorky / kódy jednotiek do jednej veľkej zbierky. Unittest je jedna funkcia používaná v Pythone na ľahké použitie testovania.

Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...