import inspect import pytest from _pytest import warning_types from _pytest.pytester import Pytester @pytest.mark.parametrize( "warning_class", [ w for n, w in vars(warning_types).items() if inspect.isclass(w) and issubclass(w, Warning) ], ) def test_warning_types(warning_class: UserWarning) -> None: """Make sure all warnings declared in _pytest.warning_types are displayed as coming from 'pytest' instead of the internal module (#5452). """ assert warning_class.__module__ == "pytest" @pytest.mark.filterwarnings("error::pytest.PytestWarning") def test_pytest_warnings_repr_integration_test(pytester: Pytester) -> None: """Small integration test to ensure our small hack of setting the __module__ attribute of our warnings actually works (#5452). """ pytester.makepyfile( """ import pytest import warnings def test(): warnings.warn(pytest.PytestWarning("some warning")) """ ) result = pytester.runpytest() result.stdout.fnmatch_lines(["E pytest.PytestWarning: some warning"])