You can use the recwarn funcarg to assert that code triggers warnings through the Python warnings system. Here is a simple self-contained test:
# content of test_recwarn.py
def test_hello(recwarn):
from warnings import warn
warn("hello", DeprecationWarning)
w = recwarn.pop(DeprecationWarning)
assert issubclass(w.category, DeprecationWarning)
assert 'hello' in str(w.message)
assert w.filename
assert w.lineno
The recwarn function argument provides these methods:
You can also call a global helper for checking that a certain function call triggers a Deprecation warning:
import pytest
def test_global():
pytest.deprecated_call(myfunction, 17)