Testparametrisierung
@pytest.mark.parametrize
# Function to testdef calculate_average(num1, num2):return (num1 + num2) / 2# Test function using pytest's parametrizeimport pytest@pytest.mark.parametrize("num1, num2, expected",[(10, 20, 15),(20, 30, 25),(5, 5, 5)])def test_calculate_average(num1, num2, expected):assert (calculate_average(num1, num2) == expected), f"Sum of {num1} and {num2} should be equal to {expected}"
id
@pytest.mark.parametrize("num1, num2, expected", [pytest.param(10, 20, 15, id="integers"),pytest.param(20, 30, 25, id="more integers"),pytest.param(5, 5, 5, id="equal numbers")])def test_calculate_average_with_ids(num1, num2, expected):assert calculate_average(num1, num2) == expected
pytest.param
ids
@pytest.mark.parametrize("num1, num2, expected", [(10, 20, 15),(20, 30, 25),(5, 5, 5)], ids=["integers", "more integers", "equal numbers"])def test_calculate_average_with_ids(num1, num2, expected):assert calculate_average(num1, num2) == expected
===================== test session starts ======================collected 3 itemstest_example.py::test_calculate_average_with_ids[integers] FAILEDtest_example.py::test_calculate_average_with_ids[more integers] PASSEDtest_example.py::test_calculate_average_with_ids[equal numbers] PASSED=========================== FAILURES ===========================________________ test_calculate_average_with_ids[integers] ________________num1 = 10, num2 = 20, expected = 15def test_calculate_average_with_ids(num1, num2, expected):> assert calculate_average(num1, num2) == expectedE assert 20 == 15E + where 20 = calculate_average(10, 20)test_example.py:10: AssertionError================== 1 failed, 2 passed in 0.23s ==================
1. Consider a function that multiplies two numbers. Complete the test case by filling in the missing parts:
2. Was ist der Hauptvorteil der Angabe von Bezeichnern mit id
oder ids
in @pytest.mark.parametrize
?
Danke für Ihr Feedback!