pytest.warns check for class equality and not subclass relationship. This snippet for example fails:
import warnings
import pytest
with pytest.warns(Warning):
warnings.warn('user', UserWarning)
This was slightly surprising to me since my expectation was that it would be similar to pytest.raises where you can check for a base class:
import pytest
with pytest.raises(Exception):
raise ValueError()
What do you guys think? After all you can always use with pytest.warns(None) as warninfo and check issubclass(warninfo[0].message, a_warning_class) if you want to check a subclass relationship. At the same time, I don't really how it would hurt to check subclass relationship.
I guess that is just a matter of changing this line by:
if not any(issubclass(r.category, each) for each in self.expected_warning for r in self):
I am willing to open a PR about this if you think it is worth it.
pytest.warnscheck for class equality and not subclass relationship. This snippet for example fails:This was slightly surprising to me since my expectation was that it would be similar to
pytest.raiseswhere you can check for a base class:What do you guys think? After all you can always use
with pytest.warns(None) as warninfoand checkissubclass(warninfo[0].message, a_warning_class)if you want to check a subclass relationship. At the same time, I don't really how it would hurt to check subclass relationship.I guess that is just a matter of changing this line by:
I am willing to open a PR about this if you think it is worth it.