slogan3

Ontwerp effectieve parametrized unit tests voor mijn code

description

Met deze prompt leer je hoe je parametrized tests maakt die je testcode overzichtelijker en onderhoudbaarder maken. Hiermee bespaar je tijd door herhalende testcases te vermijden en verbeter je de testdekking voor verschillende invoerwaarden.

prompt

try_prompt

Help me bij het ontwerpen van parametrized unit tests voor de volgende code: <voeg hier je code in>. Geef voorbeelden van paramet ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Natuurlijk! Om parametrized unit tests te maken voor de functie `add(a, b)`, kun je gebruik maken van bijvoorbeeld het testing framework `pytest` in Python, dat ondersteuning biedt voor parametrized tests via de `@pytest.mark.parametrize` decorator. Hier is een voorbeeld van hoe je dit kunt doen: ```python import pytest # De te testen functie def add(a, b): return a + b # Parametrized testcases @pytest.mark.parametrize( "a, b, expected", [ (1, 2, 3), # simpele som (-1, 1, 0), # optelling met negatieve waarde (0, 0, 0), # beide operand 0 (1.5, 2.5, 4.0), # met float waarden (1000, 2000, 3000) # grote getallen ] ) def test_add(a, b, expected): assert add(a, b) == expected ``` **Hoe werkt dit?** - De decorator `@pytest.mark.parametrize` geeft aan dat de test meerdere keren wordt uitgevoerd met verschillende sets van invoerwaarden. - In de lijst onder `a, b, expected` definieer je de verschillende scenario's. - Voor elk tuple wordt de test `test_add` uitgevoerd, waarbij `a`, `b` en `expected` worden doorgegeven. **Voordelen:** - Je schrijft de testlogica één keer (`assert add(a, b) == expected`). - Je kunt snel en overzichtelijk meerdere scenario's testen zonder duplicatie. - Het is eenvoudig uit te breiden met nieuwe testcases door simpelweg een nieuw tuple toe te voegen. **Gebruik:** - Installeer pytest indien nodig (`pip install pytest`). - Sla je test op in een bestand zoals `test_add.py`. - Voer de tests uit met het commando: `pytest test_add.py`. Zo heb je een efficiënte en overzichtelijke manier om verschillende scenario's te testen!
provider: deepseek
model: deepseek-chat
Zeker! Hier is een uitleg over parametrized unit tests voor jouw `add` functie met voorbeelden in Python: ## Parametrized Testing Voorbeelden ### 1. Met unittest en subTest (Python standaard library) ```python import unittest class TestAddFunction(unittest.TestCase): test_cases = [ # (a, b, verwacht_resultaat, test_naam) (2, 3, 5, "positieve_getallen"), (-1, 5, 4, "negatief_en_positief"), (0, 0, 0, "beide_nul"), (2.5, 3.1, 5.6, "decimale_getallen"), (-3, -2, -5, "beide_negatief") ] def test_add_multiple_cases(self): for a, b, expected, test_name in self.test_cases: with self.subTest(test_name=test_name, a=a, b=b): self.assertEqual(add(a, b), expected) ``` ### 2. Met pytest (aanbevolen voor parametrized tests) ```python import pytest test_data = [ (2, 3, 5), (-1, 5, 4), (0, 0, 0), (2.5, 3.1, 5.6), (-3, -2, -5), (1000000, 2000000, 3000000) ] @pytest.mark.parametrize("a,b,expected", test_data) def test_add_parametrized(a, b, expected): assert add(a, b) == expected ``` ### 3. Meer geavanceerd voorbeeld met verschillende datatypen ```python @pytest.mark.parametrize("a,b,expected", [ (2, 3, 5), # integers (2.5, 3.5, 6.0), # floats ("hello", " world", "hello world"), # strings ([1, 2], [3, 4], [1, 2, 3, 4]) # lists ]) def test_add_different_types(a, b, expected): assert add(a, b) == expected ``` ## Hoe het werkt: 1. **Eén testfunctie** die meerdere testgevallen afhandelt 2. **Testdata gescheiden** van testlogica 3. **Makkelijk uitbreidbaar** - voeg gewoon nieuwe tuples toe aan de lijst 4. **Duidelijke foutmeldingen** wanneer een testcase faalt ## Voordelen: - ✅ **Geen code-duplicatie** -zelfde testlogica voor alle gevallen - ✅ **Onderhoudbaar** - testgevallen centraal beheerd - ✅ **Leesbaar** - duidelijk welke scenario's worden getest - ✅ **Schaalbaar** - makkelijk nieuwe edge cases toevoegen ## Uitvoeren: ```bash # Voor unittest python -m unittest test_module.py # Voor pytest (aanbevolen) pytest test_module.py -v ``` Pytest geeft de mooiste output en ondersteunt parametrized tests het beste!