Introduktion til Unittest i Python: Skrivning af Strukturerede Enhedstests
Unittest er en del af Pythons standardbibliotek, hvilket betyder, at ingen yderligere installationer er nødvendige for at komme i gang. Det er designet omkring konceptet test cases, som er Python-klasser, der nedarves fra frameworkets TestCase-klasse. Unittest er et fremragende værktøj for alle, der begynder deres testrejse, fordi det strukturerer tests på en måde, der afspejler principperne for objektorienteret programmering.
Strukturen af Unittest
I Unittest er hver test en metode inden for en underklasse af unittest.TestCase. Dette design tilskynder til gruppering af relaterede tests, hvilket kan hjælpe med at organisere testkoden logisk og gøre den mere læsbar.
Skrivning af en test med Unittest
Lad os teste en simpel funktion, der beregner gennemsnittet af to tal. Her er funktionen, vi ønsker at teste:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Oprettelse af en test case
For at oprette en test case defineres en klasse, der arver fra unittest.TestCase. Inden for denne klasse kan der defineres metoder til at teste funktionen calculate_average.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Først
importUnittest-modulet, som er en del af Pythons standardbibliotek; class TestCalculateAverage(unittest.TestCase)opretter en ny test case. Den arver fraunittest.TestCase, som leverer testfunktionaliteten;- Hver metode i klassen skal starte med
test_; - Metoderne anvender specifikke assert-udsagn til at kontrollere, om betingelsen er opfyldt.
Eksempel på en vellykket testoutput
Når alle tests består i Unittest, er outputten enkel og angiver, at alle tests blev kørt uden fejl. Her er et eksempel på en vellykket testrun:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Eksempel på en fejlet testoutput
Hvis en eller flere tests fejler, vil outputten give detaljer om fejlene, herunder hvilke tests der fejlede og hvorfor. Her er et eksempel på, hvordan det kan se ud, når en test fejler:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Denne output indeholder:
..Fangiver, at tre tests blev kørt; de første to bestod (repræsenteret ved..), og den tredje fejlede (F);FAILED (failures=1)viser, at der var én fejl blandt de kørte tests;- Den detaljerede fejlrapport starter med testidentifikatoren (
test_average_floats) og klassen (TestCalculateAverage). Den giver et traceback til linjen i din testkode, der forårsagede fejlen, og forklarer arten af assertionsfejlen, herunder den forventede værdi, den faktiske værdi og den acceptable fejlmargin.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain what the different assert methods in Unittest do?
How do I run these tests from the command line?
What should I do if a test fails?
Fantastisk!
Completion rate forbedret til 3.13
Introduktion til Unittest i Python: Skrivning af Strukturerede Enhedstests
Stryg for at vise menuen
Unittest er en del af Pythons standardbibliotek, hvilket betyder, at ingen yderligere installationer er nødvendige for at komme i gang. Det er designet omkring konceptet test cases, som er Python-klasser, der nedarves fra frameworkets TestCase-klasse. Unittest er et fremragende værktøj for alle, der begynder deres testrejse, fordi det strukturerer tests på en måde, der afspejler principperne for objektorienteret programmering.
Strukturen af Unittest
I Unittest er hver test en metode inden for en underklasse af unittest.TestCase. Dette design tilskynder til gruppering af relaterede tests, hvilket kan hjælpe med at organisere testkoden logisk og gøre den mere læsbar.
Skrivning af en test med Unittest
Lad os teste en simpel funktion, der beregner gennemsnittet af to tal. Her er funktionen, vi ønsker at teste:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Oprettelse af en test case
For at oprette en test case defineres en klasse, der arver fra unittest.TestCase. Inden for denne klasse kan der defineres metoder til at teste funktionen calculate_average.
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- Først
importUnittest-modulet, som er en del af Pythons standardbibliotek; class TestCalculateAverage(unittest.TestCase)opretter en ny test case. Den arver fraunittest.TestCase, som leverer testfunktionaliteten;- Hver metode i klassen skal starte med
test_; - Metoderne anvender specifikke assert-udsagn til at kontrollere, om betingelsen er opfyldt.
Eksempel på en vellykket testoutput
Når alle tests består i Unittest, er outputten enkel og angiver, at alle tests blev kørt uden fejl. Her er et eksempel på en vellykket testrun:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Eksempel på en fejlet testoutput
Hvis en eller flere tests fejler, vil outputten give detaljer om fejlene, herunder hvilke tests der fejlede og hvorfor. Her er et eksempel på, hvordan det kan se ud, når en test fejler:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
Denne output indeholder:
..Fangiver, at tre tests blev kørt; de første to bestod (repræsenteret ved..), og den tredje fejlede (F);FAILED (failures=1)viser, at der var én fejl blandt de kørte tests;- Den detaljerede fejlrapport starter med testidentifikatoren (
test_average_floats) og klassen (TestCalculateAverage). Den giver et traceback til linjen i din testkode, der forårsagede fejlen, og forklarer arten af assertionsfejlen, herunder den forventede værdi, den faktiske værdi og den acceptable fejlmargin.
Tak for dine kommentarer!