Skip to content

Commit

Permalink
add assert_outcomes(warnings=) functionality to RunResult
Browse files Browse the repository at this point in the history
* expose `warnings=` to pytester `assert_outcomes()`

* fix test fallout from adding warnings= to assert_outcomes()

* #closes 8593 - Improve test and add a `changelog` entry for the change
  • Loading branch information
symonk committed Jul 31, 2021
1 parent c27db3b commit ef5d81a
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 1 deletion.
2 changes: 2 additions & 0 deletions changelog/8953.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:class:`RunResult <_pytest.pytester.RunResult>` method :meth:`assert_outcomes <_pytest.pytester.RunResult.assert_outcomes>` now accepts a
``warnings`` argument to assert the total number of warnings captured.
2 changes: 2 additions & 0 deletions src/_pytest/pytester.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,7 @@ def assert_outcomes(
errors: int = 0,
xpassed: int = 0,
xfailed: int = 0,
warnings: int = 0,
) -> None:
"""Assert that the specified outcomes appear with the respective
numbers (0 means it didn't occur) in the text output from a test run."""
Expand All @@ -603,6 +604,7 @@ def assert_outcomes(
errors=errors,
xpassed=xpassed,
xfailed=xfailed,
warnings=warnings,
)


Expand Down
3 changes: 3 additions & 0 deletions src/_pytest/pytester_assertions.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ def assert_outcomes(
errors: int = 0,
xpassed: int = 0,
xfailed: int = 0,
warnings: int = 0,
) -> None:
"""Assert that the specified outcomes appear with the respective
numbers (0 means it didn't occur) in the text output from a test run."""
Expand All @@ -54,6 +55,7 @@ def assert_outcomes(
"errors": outcomes.get("errors", 0),
"xpassed": outcomes.get("xpassed", 0),
"xfailed": outcomes.get("xfailed", 0),
"warnings": outcomes.get("warnings", 0),
}
expected = {
"passed": passed,
Expand All @@ -62,5 +64,6 @@ def assert_outcomes(
"errors": errors,
"xpassed": xpassed,
"xfailed": xfailed,
"warnings": warnings,
}
assert obtained == expected
2 changes: 1 addition & 1 deletion testing/test_nose.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ def test_failing():
"""
)
result = pytester.runpytest(p)
result.assert_outcomes(skipped=1)
result.assert_outcomes(skipped=1, warnings=1)


def test_SkipTest_in_test(pytester: Pytester) -> None:
Expand Down
14 changes: 14 additions & 0 deletions testing/test_pytester.py
Original file line number Diff line number Diff line change
Expand Up @@ -847,3 +847,17 @@ def test_testdir_makefile_ext_empty_string_makes_file(testdir) -> None:
"""For backwards compat #8192"""
p1 = testdir.makefile("", "")
assert "test_testdir_makefile" in str(p1)


@pytest.mark.filterwarnings("default")
def test_pytester_assert_outcomes_warnings(pytester: Pytester) -> None:
pytester.makepyfile(
"""
import warnings
def test_with_warning():
warnings.warn(UserWarning("some custom warning"))
"""
)
result = pytester.runpytest()
result.assert_outcomes(passed=1, warnings=1)

0 comments on commit ef5d81a

Please sign in to comment.