Enote-testi so močno orodje za razvijalce, da zagotovijo kakovost svojega kode. Omogočajo ti, da testiraš funkcije izolirano in zagotoviš, da delujejo, kot je željeno. V tem priročniku ti bom pokazal, kako napišeš svoj prvi enotni test v Python. Pri tem se ne boš naučil le osnov enotnega testiranja, temveč tudi, kako lahko svoja testiranja učinkovito oblikuješ.

Najpomembnejše ugotovitve

  • Enotni testi pomagajo zgodaj odkriti napake in zagotavljajo, da tvoje funkcije delujejo, kot je željeno.
  • Pythonova knjižnica unittest ponuja enostaven način za implementacijo testov.
  • Učinkoviti testi vključujejo tako pozitivne kot negativne scenarije in preverjajo podatkovne tipe povratnih vrednosti.

Navodila po korakih

Korak 1: Priprava tvojega projekta

Najprej potrebuješ datoteko Python, v kateri je definirana tvoja funkcija. V našem primeru bomo datoteko poimenovali preisberechnung.py. Tukaj definiraj funkcijo get_verkaufspreis, ki prevzame nakupno ceno in doda maržo.

Python Unit-Test osnove: Tvoj začetek

Korak 2: Ustvari datoteko za svoje enotne teste

Nato ustvari novo datoteko, ki naj vsebuje teste za to funkcijo. Poimenujmo jo preisberechnung_test.py. Tukaj boš delal z modulom unittest.

Za uporabo ogrodja ga uvozi na začetku svoje datoteke:

import unittest
from preisberechnung import get_verkaufspreis
Python Unit-Test osnove: Tvoj začetek

Korak 3: Definiraj testno razred

Testna klasa naj bi podedovala unittest.TestCase. To ti omogoča, da vse teste organiziraš v strukturirani obliki. Imej razred poimenovan PreisberechnungTest, da bo jasno, kaj se testira.

Python Unit-Test osnove: Tvoj vstop

Korak 4: Napiši svoje teste

Zdaj je čas, da napišeš dejanske teste. Začni s testom, ki preverja, ali ima vrnitev iz get_verkaufspreis pričakovani tip (float):

class PreisberechnungTest(unittest.TestCase): def test_preis_ist_float(self): vk = get_verkaufspreis(100) self.assertIsInstance(vk, float)
Python enota-test osnove: Tvoj uvod

Korak 5: Testiraj neveljavne vnose

Poleg tega je pomembno testirati tudi neveljavne vnose. Dodaj test, ki preverja, ali funkcija ob neveljavnih vnosih, kot sta None ali niz, vrne izjemo:

def test_invalid_input(self): with self.assertRaises(TypeError): get_verkaufspreis("invalid")
Python Unit-Test osnove: Tvoj uvod

Korak 6: Izvedi teste

Da izvedeš svoje teste, to lahko storiš preko terminala ali neposredno v svoji IDE. Če uporabljaš terminal, izpelji naslednje:

python -m unittest preisberechnung_test.py

V svoji IDE, kot je PyCharm, lahko uporabiš konfiguracijo za zagon, da izvedeš teste.

Python Unit-Test osnove: Tvoj začetek

Korak 7: Preveri rezultate

Ko uspešno izvedeš teste, boš prejel izhod, ki ti pove, ali so vsi testi bili opravljeni. Zeleni rezultat pomeni, da tvoj koda deluje, kot je predvideno.

Korak 8: Razširi teste

Ob dodatku osnovnim testom lahko dodaš še dodatne relevantne scenarije za povečanje varnosti kode. Upoštevaj, da preizkusiš tako pozitivne kot negativne primere, da zagotoviš, da tvoja logika deluje v vseh situacijah.

Python Unit-Test Osnove: Tvoj vstop

Sklepi - Prvi enotni test z Python: Osnove in izvajanje

Pisanje enotnih testov je pomembna spretnost, ki ti pomaga, da svoj koda zagotoviš zanesljivo. V tem priročniku si se naučil, kako napisati prvi enotni test v Pythonu, od definicije funkcije do izvajanja in preverjanja rezultatov. S tem, da temeljito testiraš, se vzdržljivost tvoje kode bistveno povečuje in težave se zgodaj odkrijejo.

Pogosto zastavljena vprašanja

Kako ustvarim enotni test v Pythonu?Da ustvariš enotni test v Pythonu, ustvari testno class, ki podeduje unittest.TestCase, in piši teste kot metode te razreda.

Zakaj naj pišem enotne teste?Enotni testi pomagajo zgodaj odkriti napake in zagotavljajo, da tvoje funkcije delujejo, kot je željeno.

Kako izvedem enotne teste?Enotne teste lahko izvedeš preko terminala z python -m unittest [ime_datoteke] ali neposredno v svoji IDE.

Kaj so dobre prakse za enotne teste?Dobra praksa vključuje tako pozitivne kot negativne testne scenarije ter preverjanje podatkovnih tipov. Prav tako je pomembna rednost izvajanja, da se spremembe v kodi takoj preverijo.