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

Skrive Tester med Unittest

Sveip for å vise menyen

Når du vil sikre at koden din fungerer som forventet, er det viktig å skrive automatiserte tester. Pythons unittest-modul er et innebygd rammeverk som lar deg lage og organisere tester enkelt. Du skriver testtilfeller ved å opprette klasser som arver fra unittest.TestCase. Inne i disse klassene definerer du metoder som har navn som starter med test_. Hver metode tester et spesifikt aspekt av koden din.

En test suite er en samling av testtilfeller som kan kjøres sammen. Som standard oppdager og kjører unittest alle test_-metoder i dine TestCase-klasser. For å sjekke om koden din gir forventede resultater, bruker du påstandsmetoder som assertEqual, assertTrue, assertFalse og assertRaises. Disse påstandsmetodene sammenligner faktiske resultater med forventede, og rapporterer feil hvis de ikke stemmer overens.

For å kjøre testene dine kan du bruke kommandolinjen eller kalle unittest.main() nederst i testfilen din.

Note
Merk

assertRaises følger et annet mønster sammenlignet med andre påstandsmetoder som assertEqual eller assertTrue. I stedet for å sjekke en sluttverdi, fungerer den som en kontekstbehandler ved bruk av with-setningen for å lage en beskyttet sone. Dette gjør at testen kan overvåke koden mens den kjører og "fange" den forventede feilen.

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
Merk

Funksjonen unittest.main() i dette kapittelet inkluderer noen ekstra parametere som kun er nødvendige for dette læringsmiljøet. De hjelper koden å kjøre riktig på plattformen og er ikke en del av de sentrale Python-konseptene du trenger å lære nå.

question mark

Hvilken unittest-påstandsmetode bør du bruke for å sjekke at et funksjonskall utløser et forventet unntak?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 5. Kapittel 2
some-alt