pytest.warns checks for subclass relationship
rather than class equality. This makes it more similar to pytest.raises.
This commit is contained in:
parent
8f1450114f
commit
6fd0394c63
|
@ -10,7 +10,8 @@ New Features
|
|||
|
||||
* pytest now warns when a callable ids raises in a parametrized test. Thanks `@fogo`_ for the PR.
|
||||
|
||||
*
|
||||
* ``pytest.warns`` now checks for subclass relationship rather than
|
||||
class equality. Thanks `@lesteve`_ for the PR (`#2166`_)
|
||||
|
||||
|
||||
Changes
|
||||
|
@ -41,7 +42,11 @@ Changes
|
|||
.. _@fushi: https://github.com/fushi
|
||||
.. _@mattduck: https://github.com/mattduck
|
||||
.. _@wheerd: https://github.com/wheerd
|
||||
<<<<<<< HEAD
|
||||
.. _@fogo: https://github.com/fogo
|
||||
=======
|
||||
.. _@lesteve: https://github.com/lesteve
|
||||
>>>>>>> pytest.warns checks for subclass relationship
|
||||
|
||||
.. _#1512: https://github.com/pytest-dev/pytest/issues/1512
|
||||
.. _#1874: https://github.com/pytest-dev/pytest/pull/1874
|
||||
|
@ -49,7 +54,7 @@ Changes
|
|||
.. _#2007: https://github.com/pytest-dev/pytest/issues/2007
|
||||
.. _#2013: https://github.com/pytest-dev/pytest/issues/2013
|
||||
.. _#2101: https://github.com/pytest-dev/pytest/pull/2101
|
||||
|
||||
.. _#2166: https://github.com/pytest-dev/pytest/pull/2166
|
||||
|
||||
3.0.6.dev0 (unreleased)
|
||||
=======================
|
||||
|
|
|
@ -216,7 +216,8 @@ class WarningsChecker(WarningsRecorder):
|
|||
# only check if we're not currently handling an exception
|
||||
if all(a is None for a in exc_info):
|
||||
if self.expected_warning is not None:
|
||||
if not any(r.category in self.expected_warning for r in self):
|
||||
if not any(issubclass(r.category, exp_warning) for
|
||||
exp_warning in self.expected_warning for r in self):
|
||||
__tracebackhide__ = True
|
||||
pytest.fail("DID NOT WARN. No warnings of type {0} was emitted. "
|
||||
"The list of emitted warnings is: {1}.".format(
|
||||
|
|
|
@ -238,6 +238,16 @@ class TestWarns(object):
|
|||
assert str(record[0].message) == "user"
|
||||
assert str(record[1].message) == "runtime"
|
||||
|
||||
def test_record_by_subclass(self):
|
||||
with pytest.warns(Warning) as record:
|
||||
warnings.warn("user", UserWarning)
|
||||
warnings.warn("runtime", RuntimeWarning)
|
||||
|
||||
assert len(record) == 2
|
||||
assert str(record[0].message) == "user"
|
||||
assert str(record[1].message) == "runtime"
|
||||
|
||||
|
||||
def test_double_test(self, testdir):
|
||||
"""If a test is run again, the warning should still be raised"""
|
||||
testdir.makepyfile('''
|
||||
|
|
Loading…
Reference in New Issue