typo fix, changed position of context manager notes
This commit is contained in:
parent
4dea0892cb
commit
493530ec6d
|
@ -1194,6 +1194,28 @@ def raises(expected_exception, *args, **kwargs):
|
||||||
>>> with raises(ZeroDivisionError):
|
>>> with raises(ZeroDivisionError):
|
||||||
... 1/0
|
... 1/0
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
When using ``pytest.raises`` as a context manager, it's worthwhile to
|
||||||
|
note that normal context manager rules apply and that the exception
|
||||||
|
raised *must* be the final line in the scope of the context manager.
|
||||||
|
Lines of code after that, within the scope of the context manager will
|
||||||
|
not be executed. For example::
|
||||||
|
|
||||||
|
>>> with raises(OSError) as err:
|
||||||
|
assert 1 == 1 # this will execute as expected
|
||||||
|
raise OSError(errno.EEXISTS, 'directory exists')
|
||||||
|
assert err.errno == errno.EEXISTS # this will not execute
|
||||||
|
|
||||||
|
Instead, the following approach must be taken (note the difference in
|
||||||
|
scope)::
|
||||||
|
|
||||||
|
>>> with raises(OSError) as err:
|
||||||
|
assert 1 == 1 # this will execute as expected
|
||||||
|
raise OSError(errno.EEXISTS, 'directory exists')
|
||||||
|
|
||||||
|
assert err.errno == errno.EEXISTS # this will now execute
|
||||||
|
|
||||||
Or you can specify a callable by passing a to-be-called lambda::
|
Or you can specify a callable by passing a to-be-called lambda::
|
||||||
|
|
||||||
>>> raises(ZeroDivisionError, lambda: 1/0)
|
>>> raises(ZeroDivisionError, lambda: 1/0)
|
||||||
|
@ -1213,28 +1235,6 @@ def raises(expected_exception, *args, **kwargs):
|
||||||
>>> raises(ZeroDivisionError, "f(0)")
|
>>> raises(ZeroDivisionError, "f(0)")
|
||||||
<ExceptionInfo ...>
|
<ExceptionInfo ...>
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
When using ``pytest.raises`` as a context manager, it's worthwhile to
|
|
||||||
note that normal context manager rules apply and that the exception
|
|
||||||
raised *must* be the final line in the scope of the context manager.
|
|
||||||
Lines of code after that, within the scope of the context manager will
|
|
||||||
not be executed. For example::
|
|
||||||
|
|
||||||
>>> with raises(OSError) as err:
|
|
||||||
assert 1 == 1 # this will execute as expected
|
|
||||||
raise OSError(errno.EEXISTS, 'directory exists')
|
|
||||||
assert err.errno = errno.EEXISTS # this will not execute
|
|
||||||
|
|
||||||
Instead, the following approach must be taken (note the difference in
|
|
||||||
scope)::
|
|
||||||
|
|
||||||
>>> with raises(OSError) as err:
|
|
||||||
assert 1 == 1 # this will execute as expected
|
|
||||||
raise OSError(errno.EEXISTS, 'directory exists')
|
|
||||||
|
|
||||||
assert err.errno = errno.EEXISTS # this will now execute
|
|
||||||
|
|
||||||
Performance note:
|
Performance note:
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue