Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Skriva Tester med Unittest | Testing with unittest and pytest
Python Strukturell Programmering

Skriva Tester med Unittest

Svep för att visa menyn

När du vill säkerställa att din kod fungerar som förväntat är det viktigt att skriva automatiserade tester. Pythons unittest-modul är ett inbyggt ramverk som gör det enkelt att skapa och organisera tester. Du skriver testfall genom att skapa klasser som ärver från unittest.TestCase. Inuti dessa klasser definierar du metoder vars namn börjar med test_. Varje metod kontrollerar en specifik aspekt av din kod.

En testsuite är en samling testfall som kan köras tillsammans. Som standard upptäcker och kör unittest alla metoder som börjar med test_ i dina TestCase-klasser. För att kontrollera om din kod ger förväntade resultat använder du assertionsmetoder som assertEqual, assertTrue, assertFalse och assertRaises. Dessa assertionsmetoder jämför faktiska resultat med förväntade och rapporterar fel om de inte stämmer överens.

För att köra dina tester kan du använda kommandoraden eller anropa unittest.main() längst ner i din testfil.

Note
Notering

assertRaises följer ett särskilt mönster jämfört med andra assertionsmetoder som assertEqual eller assertTrue. Istället för att kontrollera ett slutvärde fungerar den som en kontextmanager med hjälp av with-satsen för att skapa en skyddad zon. Detta gör att testet kan övervaka koden medan den körs och "fånga" det förväntade felet.

1234567891011121314151617181920212223
import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
Note
Observera

Funktionen unittest.main() i detta kapitel innehåller några extra parametrar som endast krävs för denna lärmiljö. De hjälper koden att köras korrekt på plattformen och är inte en del av de grundläggande Python-koncepten du behöver lära dig just nu.

question mark

Vilken unittest-assertionmetod ska du använda för att kontrollera att ett funktionsanrop utlöser ett förväntat undantag?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 2

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

Avsnitt 5. Kapitel 2
some-alt