Skip to content

Commit

Permalink
Merge pull request #9911 from bkeyvani/fix-issue-8646
Browse files Browse the repository at this point in the history
  • Loading branch information
Zac-HD committed May 11, 2022
2 parents 37316ed + a29f4af commit ccdee08
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 0 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Expand Up @@ -44,6 +44,7 @@ Aron Coyle
Aron Curzon
Aviral Verma
Aviv Palivoda
Babak Keyvani
Barney Gale
Ben Gartner
Ben Webb
Expand Down
2 changes: 2 additions & 0 deletions changelog/8646.improvement.rst
@@ -0,0 +1,2 @@
Improve :py:func:`pytest.raises`. Previously passing an empty tuple would give a confusing
error. We now raise immediately with a more helpful message.
6 changes: 6 additions & 0 deletions src/_pytest/python_api.py
Expand Up @@ -899,6 +899,12 @@ def raises(
"""
__tracebackhide__ = True

if not expected_exception:
raise ValueError(
f"Expected an exception type or a tuple of exception types, but got `{expected_exception!r}`. "
f"Raising exceptions is already understood as failing the test, so you don't need "
f"any special code to say 'this should never raise an exception'."
)
if isinstance(expected_exception, type):
excepted_exceptions: Tuple[Type[E], ...] = (expected_exception,)
else:
Expand Down
10 changes: 10 additions & 0 deletions testing/python/raises.py
Expand Up @@ -19,6 +19,16 @@ def test_raises_function(self):
excinfo = pytest.raises(ValueError, int, "hello")
assert "invalid literal" in str(excinfo.value)

def test_raises_does_not_allow_none(self):
with pytest.raises(ValueError, match="Expected an exception type or"):
# We're testing that this invalid usage gives a helpful error,
# so we can ignore Mypy telling us that None is invalid.
pytest.raises(expected_exception=None) # type: ignore

def test_raises_does_not_allow_empty_tuple(self):
with pytest.raises(ValueError, match="Expected an exception type or"):
pytest.raises(expected_exception=())

def test_raises_callable_no_exception(self) -> None:
class A:
def __call__(self):
Expand Down

0 comments on commit ccdee08

Please sign in to comment.