pytest

py.test hacks to support XFAIL/XPASS

sympy.utilities.pytest.SKIP(reason)[source]

Similar to skip(), but this is a decorator.

sympy.utilities.pytest.raises(expectedException, code=None)[source]

Tests that code raises the exception expectedException.

code may be a callable, such as a lambda expression or function name.

If code is not given or None, raises will return a context manager for use in with statements; the code to execute then comes from the scope of the with.

raises() does nothing if the callable raises the expected exception, otherwise it raises an AssertionError.

Examples

>>> from sympy.utilities.pytest import raises
>>> raises(ZeroDivisionError, lambda: 1/0)
>>> raises(ZeroDivisionError, lambda: 1/2)
Traceback (most recent call last):
...
AssertionError: DID NOT RAISE
>>> with raises(ZeroDivisionError):
...     n = 1/0
>>> with raises(ZeroDivisionError):
...     n = 1/2
Traceback (most recent call last):
...
AssertionError: DID NOT RAISE

Note that you cannot test multiple statements via with raises:

>>> with raises(ZeroDivisionError):
...     n = 1/0    # will execute and raise, aborting the ``with``
...     n = 9999/0 # never executed

This is just what with is supposed to do: abort the contained statement sequence at the first exception and let the context manager deal with the exception.

To test multiple statements, you’ll need a separate with for each:

>>> with raises(ZeroDivisionError):
...     n = 1/0    # will execute and raise
>>> with raises(ZeroDivisionError):
...     n = 9999/0 # will also execute and raise