Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Introduksjon til Unittest i Python: Skriving av Strukturerte Enhetstester | Beherske Unittest-rammeverket
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Python Strukturert Programmering

bookIntroduksjon til Unittest i Python: Skriving av Strukturerte Enhetstester

Unittest er en del av Pythons standardbibliotek, noe som betyr at ingen ekstra installasjoner er nødvendig for å komme i gang. Det er bygget rundt konseptet testtilfeller, som er Python-klasser avledet fra rammeverkets TestCase-klasse. Unittest er et utmerket verktøy for alle som begynner med testing, fordi det strukturerer tester på en måte som gjenspeiler prinsippene for objektorientert programmering.

Strukturen til Unittest

I Unittest er hver test en metode i en underklasse av unittest.TestCase. Dette designet oppmuntrer til å gruppere relaterte tester sammen, noe som kan bidra til å organisere testkoden logisk og gjøre den mer lesbar.

Skrive en test med Unittest

Her testes en enkel funksjon som beregner gjennomsnittet av to tall. Her er funksjonen som skal testes:

def calculate_average(num1, num2):
    return (num1 + num2) / 2

Opprette et testtilfelle

For å opprette et testtilfelle defineres en klasse som arver fra unittest.TestCase. I denne klassen kan det defineres metoder for å teste calculate_average-funksjonen.

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 utføres import av Unittest-modulen, som er en del av Pythons standardbibliotek;
  • class TestCalculateAverage(unittest.TestCase) oppretter et nytt testtilfelle. Den arver fra unittest.TestCase, som gir testfunksjonalitet;
  • Hver metode i klassen bør starte med test_;
  • Metodene bruker spesifikke assert-setninger for å kontrollere om betingelsen er sann.

Eksempel på vellykket testutskrift

Når alle tester består i Unittest, er utdataene enkle og indikerer at alle tester ble kjørt uten feil. Her er et eksempel på en vellykket testrunde:

...
----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK

Eksempel på mislykket testutskrift

Hvis én eller flere tester feiler, vil utdataene gi detaljer om feilene, inkludert hvilke tester som feilet og hvorfor. Her er et eksempel på hvordan det kan se ut når en test feiler:

..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)

----------------------------------------------------------------------

Denne utskriften inkluderer:

  • ..F indikerer at tre tester ble kjørt; de to første bestod (representert med ..), og den tredje feilet (F);
  • FAILED (failures=1) viser at det var én feil blant testene som ble kjørt;
  • Den detaljerte feilrapporten starter med testidentifikatoren (test_average_floats) og klassen (TestCalculateAverage). Den gir en sporingslogg til linjen i testkoden som forårsaket feilen og forklarer hva som gikk galt i påstanden, inkludert forventet verdi, faktisk verdi og akseptabel feilmargin.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1

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

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?

bookIntroduksjon til Unittest i Python: Skriving av Strukturerte Enhetstester

Sveip for å vise menyen

Unittest er en del av Pythons standardbibliotek, noe som betyr at ingen ekstra installasjoner er nødvendig for å komme i gang. Det er bygget rundt konseptet testtilfeller, som er Python-klasser avledet fra rammeverkets TestCase-klasse. Unittest er et utmerket verktøy for alle som begynner med testing, fordi det strukturerer tester på en måte som gjenspeiler prinsippene for objektorientert programmering.

Strukturen til Unittest

I Unittest er hver test en metode i en underklasse av unittest.TestCase. Dette designet oppmuntrer til å gruppere relaterte tester sammen, noe som kan bidra til å organisere testkoden logisk og gjøre den mer lesbar.

Skrive en test med Unittest

Her testes en enkel funksjon som beregner gjennomsnittet av to tall. Her er funksjonen som skal testes:

def calculate_average(num1, num2):
    return (num1 + num2) / 2

Opprette et testtilfelle

For å opprette et testtilfelle defineres en klasse som arver fra unittest.TestCase. I denne klassen kan det defineres metoder for å teste calculate_average-funksjonen.

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 utføres import av Unittest-modulen, som er en del av Pythons standardbibliotek;
  • class TestCalculateAverage(unittest.TestCase) oppretter et nytt testtilfelle. Den arver fra unittest.TestCase, som gir testfunksjonalitet;
  • Hver metode i klassen bør starte med test_;
  • Metodene bruker spesifikke assert-setninger for å kontrollere om betingelsen er sann.

Eksempel på vellykket testutskrift

Når alle tester består i Unittest, er utdataene enkle og indikerer at alle tester ble kjørt uten feil. Her er et eksempel på en vellykket testrunde:

...
----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK

Eksempel på mislykket testutskrift

Hvis én eller flere tester feiler, vil utdataene gi detaljer om feilene, inkludert hvilke tester som feilet og hvorfor. Her er et eksempel på hvordan det kan se ut når en test feiler:

..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)

----------------------------------------------------------------------

Denne utskriften inkluderer:

  • ..F indikerer at tre tester ble kjørt; de to første bestod (representert med ..), og den tredje feilet (F);
  • FAILED (failures=1) viser at det var én feil blant testene som ble kjørt;
  • Den detaljerte feilrapporten starter med testidentifikatoren (test_average_floats) og klassen (TestCalculateAverage). Den gir en sporingslogg til linjen i testkoden som forårsaket feilen og forklarer hva som gikk galt i påstanden, inkludert forventet verdi, faktisk verdi og akseptabel feilmargin.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 1
some-alt