Tests Schrijven met Unittest
Veeg om het menu te tonen
Wanneer je wilt controleren of je code werkt zoals verwacht, is het schrijven van geautomatiseerde tests essentieel. De unittest-module van Python is een ingebouwd framework waarmee je eenvoudig tests kunt maken en organiseren. Je schrijft testgevallen door klassen te maken die erven van unittest.TestCase. Binnen deze klassen definieer je methoden waarvan de namen beginnen met test_. Elke methode controleert een specifiek aspect van je code.
Een test suite is een verzameling testgevallen die samen kunnen worden uitgevoerd. Standaard ontdekt en voert unittest alle test_-methoden uit in je TestCase-klassen. Om te controleren of je code de verwachte resultaten oplevert, gebruik je assertiemethoden zoals assertEqual, assertTrue, assertFalse en assertRaises. Deze assertiemethoden vergelijken de werkelijke uitkomsten met de verwachte, en rapporteren fouten als deze niet overeenkomen.
Om je tests uit te voeren, kun je de opdrachtregel gebruiken of unittest.main() onderaan je testbestand aanroepen.
assertRaises volgt een ander patroon dan andere assertiemethoden zoals assertEqual of assertTrue. In plaats van een eindwaarde te controleren, werkt het als een contextmanager met behulp van de with-instructie om een beveiligde zone te creëren. Hierdoor kan de test de code tijdens de uitvoering volgen en de verwachte fout "opvangen".
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)
De functie unittest.main() in dit hoofdstuk bevat een paar extra parameters die alleen nodig zijn voor deze leeromgeving. Ze zorgen ervoor dat de code correct werkt op het platform en maken geen deel uit van de kernconcepten van Python die je nu hoeft te leren.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.