Skrivning af Tests med Unittest
Stryg for at vise menuen
Når du vil sikre, at din kode fungerer som forventet, er det vigtigt at skrive automatiserede tests. Pythons unittest-modul er et indbygget framework, der gør det nemt at oprette og organisere tests. Du skriver testtilfælde ved at oprette klasser, der arver fra unittest.TestCase. Inden i disse klasser definerer du metoder, hvis navne starter med test_. Hver metode tester et specifikt aspekt af din kode.
Et test suite er en samling af testtilfælde, der kan køres samlet. Som standard finder og kører unittest alle test_-metoder i dine TestCase-klasser. For at kontrollere, om din kode giver de forventede resultater, bruger du assertionsmetoder som assertEqual, assertTrue, assertFalse og assertRaises. Disse assertionsmetoder sammenligner faktiske resultater med forventede og rapporterer fejl, hvis de ikke stemmer overens.
For at køre dine tests kan du bruge kommandolinjen eller kalde unittest.main() nederst i din testfil.
assertRaises følger et andet mønster end andre assertionsmetoder som assertEqual eller assertTrue. I stedet for at kontrollere en slutværdi fungerer den som en kontekstmanager ved brug af with-sætningen for at oprette en beskyttet zone. Dette gør det muligt for testen at overvåge koden, mens den kører, og "fange" den forventede fejl.
1234567891011121314151617181920212223import 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)
Funktionen unittest.main() i dette kapitel indeholder et par ekstra parametre, som kun er nødvendige for dette læringsmiljø. De hjælper koden med at køre korrekt på platformen og er ikke en del af de centrale Python-koncepter, du behøver at lære nu.
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