Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Skrivning af Tests med Unittest | Testing with unittest and pytest
Python Strukturel Programmering

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.

Note
Bemærk

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.

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
Bemærk

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.

question mark

Hvilken unittest-assertionsmetode skal du bruge for at kontrollere, at et funktionskald udløser en forventet undtagelse?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 5. Kapitel 2
some-alt