Tips and Tricks - Test Not Raising an Exception

Pytest provides a context manager, which can be used to test that a certain piece of code raises an exception. In order to test different input values and whether or not an exception is raised, pytest's parametrisation feature can be combined with nullcontext from the contextlib module.

from contextlib import nullcontext as does_not_raise
import pytest


@pytest.mark.parametrize(
    "example_input,expectation",
    [
        (3, does_not_raise()),
        (2, does_not_raise()),
        (1, does_not_raise()),
        (0, pytest.raises(ZeroDivisionError)),
    ],
)
def test_division(example_input, expectation):
    """Test how much I know division."""
    with expectation:
        assert (6 / example_input) is not None

Reference: https://stackoverflow.com/a/68012715/6707020

Groups: pytest