pytest-raises-with-multiple-statements (PT012)#
Derived from the flake8-pytest-style linter.
What it does#
Checks for pytest.raises
context managers with multiple statements.
Why is this bad?#
When a pytest.raises
is used as a context manager and contains multiple
statements, it can lead to the test passing when it actually should fail.
To avoid this, a pytest.raises
context manager should only contain
a single simple statement that raises the expected exception.
Example#
import pytest
def test_foo():
with pytest.raises(MyError):
setup() # may raise `MyError`
func_to_test()
assert foo() # not executed
Use instead: