_pytest.recwarn module

recording warnings during test function execution.

for ... in recwarn()[source]

Return a WarningsRecorder instance that records all warnings emitted by test functions.

See http://docs.python.org/library/warnings.html for information on warning categories.

deprecated_call(func=None, *args, **kwargs)[source]

context manager that can be used to ensure a block of code triggers a DeprecationWarning or PendingDeprecationWarning:

>>> import warnings
>>> def api_call_v2():
...     warnings.warn('use v3 of this api', DeprecationWarning)
...     return 200

>>> with deprecated_call():
...    assert api_call_v2() == 200

deprecated_call can also be used by passing a function and *args and *kwargs, in which case it will ensure calling func(*args, **kwargs) produces one of the warnings types above.

warns(expected_warning: Optional[Union[Type[Warning], Tuple[Type[Warning], …]]], *args: Any, match: Optional[Union[str, Pattern]] = None, **kwargs: Any) → Union[WarningsChecker, Any][source]

Assert that code raises a particular class of warning.

Specifically, the parameter expected_warning can be a warning class or sequence of warning classes, and the inside the with block must issue a warning of that class or classes.

This helper produces a list of warnings.WarningMessage objects, one for each warning raised.

This function can be used as a context manager, or any of the other ways pytest.raises can be used:

>>> with warns(RuntimeWarning):
...    warnings.warn("my warning", RuntimeWarning)

In the context manager form you may use the keyword argument match to assert that the exception matches a text or regex:

>>> with warns(UserWarning, match='must be 0 or None'):
...     warnings.warn("value must be 0 or None", UserWarning)

>>> with warns(UserWarning, match=r'must be \d+$'):
...     warnings.warn("value must be 42", UserWarning)

>>> with warns(UserWarning, match=r'must be \d+$'):
...     warnings.warn("this is not here", UserWarning)
Traceback (most recent call last):
  ...
_pytest.outcomes.Failed: DID NOT WARN. No warnings of type ...UserWarning... was emitted...
class WarningsRecorder[source]

Bases: warnings.catch_warnings

A context manager to record raised warnings.

Adapted from warnings.catch_warnings.

list

The list of recorded warnings.

pop(cls: Type[Warning] = <class 'Warning'>) → warnings.WarningMessage[source]

Pop the first recorded warning, raise exception if not exists.

clear()None[source]

Clear the list of recorded warnings.

class WarningsChecker(expected_warning: Optional[Union[Type[Warning], Tuple[Type[Warning], …]]] = None, match_expr: Optional[Union[str, Pattern]] = None)[source]

Bases: _pytest.recwarn.WarningsRecorder