Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Introduktion till Unittest i Python: Skriva Strukturerade Enhetstester | Behärska Unittest-Ramverket
Python Strukturell Programmering

bookIntroduktion 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 import Unittest-modulen, som är en del av Pythons standardbibliotek;
  • class TestCalculateAverage(unittest.TestCase) skapar ett nytt testfall. Det ärver från unittest.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:

  • ..F indikerar 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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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?

bookIntroduktion 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 import Unittest-modulen, som är en del av Pythons standardbibliotek;
  • class TestCalculateAverage(unittest.TestCase) skapar ett nytt testfall. Det ärver från unittest.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:

  • ..F indikerar 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.

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 1
some-alt