Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Introductie tot Unittest in Python: Gestructureerde Unittests Schrijven | Unittest-Framework Beheersen
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Python Structureel Programmeren

bookIntroductie tot Unittest in Python: Gestructureerde Unittests Schrijven

Unittest maakt deel uit van de standaardbibliotheek van Python, wat betekent dat geen extra installaties nodig zijn om te beginnen. Het is ontworpen rond het concept van testcases, die Python-klassen zijn afgeleid van de TestCase-klasse van het framework. Unittest is een uitstekend hulpmiddel voor iedereen die begint met testen, omdat het tests structureert op een manier die de principes van objectgeoriënteerd programmeren weerspiegelt.

De structuur van Unittest

In Unittest is elke test een methode binnen een subklasse van unittest.TestCase. Dit ontwerp stimuleert het groeperen van gerelateerde tests, wat kan helpen om testcode logisch te organiseren en leesbaarder te maken.

Een test schrijven met Unittest

Hier volgt een test van een eenvoudige functie die het gemiddelde van twee getallen berekent. Dit is de functie die getest wordt:

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

Een testcase aanmaken

Voor het aanmaken van een testcase definieert u een klasse die overerft van unittest.TestCase. Binnen deze klasse kunnen vervolgens methoden worden gedefinieerd om de functie calculate_average te testen.

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)
  • Eerst wordt het import-statement gebruikt om het Unittest-module te laden;
  • class TestCalculateAverage(unittest.TestCase) maakt een nieuwe testcase aan. Deze erft van unittest.TestCase, dat de testfunctionaliteit biedt;
  • Elke methode in de klasse moet beginnen met test_;
  • De methoden gebruiken specifieke assert-statements om te controleren of een voorwaarde waar is.

Voorbeeld van een Succesvolle Testuitvoer

Wanneer alle tests slagen in Unittest, is de uitvoer eenvoudig en geeft aan dat alle tests succesvol zijn uitgevoerd zonder fouten. Hier is een voorbeeld van een geslaagde testrun:

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

OK

Voorbeeld van een Mislukte Testuitvoer

Als één of meer tests mislukken, geeft de uitvoer details over de fouten, inclusief welke tests zijn mislukt en waarom. Hier is een voorbeeld van hoe het eruit kan zien wanneer een test faalt:

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

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

Deze uitvoer bevat:

  • ..F geeft aan dat er drie tests zijn uitgevoerd; de eerste twee zijn geslaagd (aangegeven door ..), en de derde is mislukt (F);
  • FAILED (failures=1) toont dat er één fout was onder de uitgevoerde tests;
  • Het gedetailleerde foutrapport begint met de testidentificatie (test_average_floats) en de klasse (TestCalculateAverage). Het geeft een traceback naar de regel in de testcode die de fout veroorzaakte en legt de aard van de assertiefout uit, inclusief de verwachte waarde, de werkelijke waarde en de toegestane foutmarge.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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?

bookIntroductie tot Unittest in Python: Gestructureerde Unittests Schrijven

Veeg om het menu te tonen

Unittest maakt deel uit van de standaardbibliotheek van Python, wat betekent dat geen extra installaties nodig zijn om te beginnen. Het is ontworpen rond het concept van testcases, die Python-klassen zijn afgeleid van de TestCase-klasse van het framework. Unittest is een uitstekend hulpmiddel voor iedereen die begint met testen, omdat het tests structureert op een manier die de principes van objectgeoriënteerd programmeren weerspiegelt.

De structuur van Unittest

In Unittest is elke test een methode binnen een subklasse van unittest.TestCase. Dit ontwerp stimuleert het groeperen van gerelateerde tests, wat kan helpen om testcode logisch te organiseren en leesbaarder te maken.

Een test schrijven met Unittest

Hier volgt een test van een eenvoudige functie die het gemiddelde van twee getallen berekent. Dit is de functie die getest wordt:

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

Een testcase aanmaken

Voor het aanmaken van een testcase definieert u een klasse die overerft van unittest.TestCase. Binnen deze klasse kunnen vervolgens methoden worden gedefinieerd om de functie calculate_average te testen.

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)
  • Eerst wordt het import-statement gebruikt om het Unittest-module te laden;
  • class TestCalculateAverage(unittest.TestCase) maakt een nieuwe testcase aan. Deze erft van unittest.TestCase, dat de testfunctionaliteit biedt;
  • Elke methode in de klasse moet beginnen met test_;
  • De methoden gebruiken specifieke assert-statements om te controleren of een voorwaarde waar is.

Voorbeeld van een Succesvolle Testuitvoer

Wanneer alle tests slagen in Unittest, is de uitvoer eenvoudig en geeft aan dat alle tests succesvol zijn uitgevoerd zonder fouten. Hier is een voorbeeld van een geslaagde testrun:

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

OK

Voorbeeld van een Mislukte Testuitvoer

Als één of meer tests mislukken, geeft de uitvoer details over de fouten, inclusief welke tests zijn mislukt en waarom. Hier is een voorbeeld van hoe het eruit kan zien wanneer een test faalt:

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

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

Deze uitvoer bevat:

  • ..F geeft aan dat er drie tests zijn uitgevoerd; de eerste twee zijn geslaagd (aangegeven door ..), en de derde is mislukt (F);
  • FAILED (failures=1) toont dat er één fout was onder de uitgevoerde tests;
  • Het gedetailleerde foutrapport begint met de testidentificatie (test_average_floats) en de klasse (TestCalculateAverage). Het geeft een traceback naar de regel in de testcode die de fout veroorzaakte en legt de aard van de assertiefout uit, inclusief de verwachte waarde, de werkelijke waarde en de toegestane foutmarge.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 5. Hoofdstuk 1
some-alt