Introduktion till Unittest i Python: Skriva Strukturerade Enhetstester
Unittest är en del av Pythons standardbibliotek, vilket innebär att inga extra installationer krävs för att komma igång. Det är utformat kring konceptet testfall, som är Python-klasser härledda från ramverkets TestCase-klass. Unittest är ett utmärkt verktyg för den som påbörjar sin testningsresa eftersom det strukturerar tester på ett sätt som speglar principerna för objektorienterad programmering.
Strukturen för Unittest
I Unittest är varje test en metod inom en subklass av unittest.TestCase. Denna design uppmuntrar gruppering av relaterade tester, vilket kan hjälpa till att organisera testkoden logiskt och göra den mer läsbar.
Skriva ett test med Unittest
Vi ska testa en enkel funktion som beräknar medelvärdet av två tal. Här är funktionen vi vill testa:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Skapa ett testfall
För att skapa ett testfall definieras en klass som ärver från unittest.TestCase. Inom denna klass kan metoder definieras för att testa 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-modulen, som är en del av Pythons standardbibliotek; class TestCalculateAverage(unittest.TestCase)skapar ett nytt testfall. Det ärver frånunittest.TestCase, vilket tillhandahåller testfunktionaliteten;- Varje metod i klassen bör börja med
test_; - Metoderna använder specifika assert-satser för att kontrollera om villkoret är sant.
Exempel på ett lyckat testresultat
När alla tester passerar i Unittest är utdata enkel och visar att alla tester kördes framgångsrikt utan några fel. Här är ett exempel på en lyckad testrunda:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Exempel på ett misslyckat testresultat
Om ett eller flera tester misslyckas kommer utdata att ge detaljer om felen, inklusive vilka tester som misslyckades och varför. Här är ett exempel på hur det kan se ut när ett test misslyckas:
..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)
----------------------------------------------------------------------
Denna utdata innehåller:
..Findikerar att tre tester kördes; de två första passerade (representerat av..), och det tredje misslyckades (F);FAILED (failures=1)visar att det fanns ett fel bland de körda testerna;- Den detaljerade felrapporten börjar med testidentifieraren (
test_average_floats) och klassen (TestCalculateAverage). Den ger en spårning till raden i din testkod som orsakade felet och förklarar typen av assertionsfel, inklusive det förväntade värdet, det faktiska värdet och den acceptabla felmarginalen.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 3.13
Introduktion till Unittest i Python: Skriva Strukturerade Enhetstester
Svep för att visa menyn
Unittest är en del av Pythons standardbibliotek, vilket innebär att inga extra installationer krävs för att komma igång. Det är utformat kring konceptet testfall, som är Python-klasser härledda från ramverkets TestCase-klass. Unittest är ett utmärkt verktyg för den som påbörjar sin testningsresa eftersom det strukturerar tester på ett sätt som speglar principerna för objektorienterad programmering.
Strukturen för Unittest
I Unittest är varje test en metod inom en subklass av unittest.TestCase. Denna design uppmuntrar gruppering av relaterade tester, vilket kan hjälpa till att organisera testkoden logiskt och göra den mer läsbar.
Skriva ett test med Unittest
Vi ska testa en enkel funktion som beräknar medelvärdet av två tal. Här är funktionen vi vill testa:
def calculate_average(num1, num2):
return (num1 + num2) / 2
Skapa ett testfall
För att skapa ett testfall definieras en klass som ärver från unittest.TestCase. Inom denna klass kan metoder definieras för att testa 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-modulen, som är en del av Pythons standardbibliotek; class TestCalculateAverage(unittest.TestCase)skapar ett nytt testfall. Det ärver frånunittest.TestCase, vilket tillhandahåller testfunktionaliteten;- Varje metod i klassen bör börja med
test_; - Metoderna använder specifika assert-satser för att kontrollera om villkoret är sant.
Exempel på ett lyckat testresultat
När alla tester passerar i Unittest är utdata enkel och visar att alla tester kördes framgångsrikt utan några fel. Här är ett exempel på en lyckad testrunda:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
Exempel på ett misslyckat testresultat
Om ett eller flera tester misslyckas kommer utdata att ge detaljer om felen, inklusive vilka tester som misslyckades och varför. Här är ett exempel på hur det kan se ut när ett test misslyckas:
..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)
----------------------------------------------------------------------
Denna utdata innehåller:
..Findikerar att tre tester kördes; de två första passerade (representerat av..), och det tredje misslyckades (F);FAILED (failures=1)visar att det fanns ett fel bland de körda testerna;- Den detaljerade felrapporten börjar med testidentifieraren (
test_average_floats) och klassen (TestCalculateAverage). Den ger en spårning till raden i din testkod som orsakade felet och förklarar typen av assertionsfel, inklusive det förväntade värdet, det faktiska värdet och den acceptabla felmarginalen.
Tack för dina kommentarer!