Cannot enter WarningsChecker twice
See original GitHub issue- Include a detailed description of the bug or suggestion
pytest.warns
fails with RuntimeError: Cannot enter WarningsChecker(record=True) twice
when parametrizing test function multiple times.
- Minimal example if possible
This works just fine:
import pytest
import warnings
@pytest.mark.parametrize("expectation", [
pytest.warns(DeprecationWarning,
match="Message A"),
pytest.warns(DeprecationWarning,
match="Message B"),
])
def test_parametrized_warnings(expectation):
with expectation:
warnings.warn("Message A", DeprecationWarning)
But when parametrizing another argument independently:
import pytest
import warnings
@pytest.mark.parametrize("other", [1, 2])
@pytest.mark.parametrize("expectation", [
pytest.warns(DeprecationWarning,
match="Message A"),
pytest.warns(DeprecationWarning,
match="Message B"),
])
def test_parametrized_warnings(other, expectation):
with expectation:
warnings.warn("Message A", DeprecationWarning)
Then I get this error:
RuntimeError: Cannot enter WarningsChecker(record=True) twice
- pytest and operating system versions
pytest 4.0.1
and Windows 10
-
pip list
of the virtual environment you are using
Package Version
------------------------ ----------
alabaster 0.7.12
allure-pytest 2.5.4
allure-python-commons 2.5.4
apipkg 1.5
asn1crypto 0.24.0
asv 0.3.1
atomicwrites 1.2.1
attrs 18.2.0
aws-xray-sdk 0.95
Babel 2.6.0
backcall 0.1.0
beautifulsoup4 4.7.1
bleach 3.0.2
blosc 1.7.0
boto 2.49.0
boto3 1.9.75
botocore 1.12.75
Bottleneck 1.2.1
certifi 2018.11.29
cffi 1.11.5
chardet 3.0.4
colorama 0.4.1
coverage 4.5.2
cpplint 1.3.0
cryptography 2.4.2
cycler 0.10.0
Cython 0.29.2
decorator 4.3.0
docker 3.6.0
docker-pycreds 0.4.0
docutils 0.14
ecdsa 0.13
entrypoints 0.3
et-xmlfile 1.0.1
execnet 1.5.0
fastparquet 0.2.1
flake8 3.6.0
flake8-comprehensions 1.4.1
flake8-rst 0.7.0
future 0.17.1
gitdb2 2.0.5
GitPython 2.1.11
html5lib 1.0.1
hypothesis 3.86.7
idna 2.8
imagesize 1.1.0
ipykernel 5.1.0
ipython 7.2.0
ipython-genutils 0.2.0
isort 4.3.4
jdcal 1.4
jedi 0.13.2
Jinja2 2.10
jmespath 0.9.3
jsondiff 1.1.1
jsonpickle 1.0
jsonschema 2.6.0
jupyter-client 5.2.4
jupyter-core 4.4.0
kiwisolver 1.0.1
llvmlite 0.27.0
lxml 4.3.0
MarkupSafe 1.1.0
matplotlib 3.0.2
mccabe 0.6.1
mistune 0.8.4
mock 2.0.0
more-itertools 4.3.0
moto 1.3.7
nbconvert 5.3.1
nbformat 4.4.0
nbsphinx 0.4.1
numba 0.42.0
numexpr 2.6.9
numpy 1.15.4
numpydoc 0.8.0
openpyxl 2.5.12
packaging 18.0
pandas 0.23.4
pandocfilters 1.4.2
parso 0.3.1
pbr 5.1.1
PeakUtils 1.3.0
pickleshare 0.7.5
pip 10.0.1
pluggy 0.8.0
prompt-toolkit 2.0.7
py 1.7.0
pyaml 18.11.0
pyarrow 0.11.1
pycodestyle 2.4.0
pycparser 2.19
pycryptodome 3.7.2
pycryptodomex 3.7.2
pyflakes 2.0.0
Pygments 2.3.1
pyModbusTCP 0.1.8
pyparsing 2.3.0
pypiwin32 223
pytest 4.0.1
pytest-cov 2.6.1
pytest-forked 0.2
pytest-runner 4.2
pytest-xdist 1.25.0
python-dateutil 2.7.5
python-jose 2.0.2
pytz 2018.7
pywin32 224
PyYAML 3.13
pyzmq 17.1.2
requests 2.21.0
responses 0.10.5
s3fs 0.2.0
s3transfer 0.1.13
scipy 1.1.0
seaborn 0.9.0
setuptools 39.0.1
six 1.12.0
smmap2 2.0.5
snowballstemmer 1.2.1
soupsieve 1.6.2
Sphinx 1.8.3
sphinxcontrib-websupport 1.1.0
SQLAlchemy 1.2.15
statsmodels 0.9.0
tables 3.4.4
testpath 0.4.2
thrift 0.11.0
tornado 5.1.1
traitlets 4.3.2
Typhoon-HIL-API 1.3.0
TyphoonTest 1.2.1
urllib3 1.24.1
wcwidth 0.1.7
webencodings 0.5.1
websocket-client 0.54.0
Werkzeug 0.14.1
win-inet-pton 1.0.1
wrapt 1.10.11
xarray 0.11.2
xlrd 1.2.0
XlsxWriter 1.1.2
xlwt 1.3.0
xmltodict 0.11.0
Issue Analytics
- State:
- Created 5 years ago
- Comments:10 (10 by maintainers)
Top Results From Across the Web
_pytest.recwarn — pytest documentation
... loc.update(kwargs) with WarningsChecker(expected_warning): code = _pytest._code. ... True raise RuntimeError("Cannot enter %r twice" % self) self.
Read more >_pytest.recwarn — pytest documentation
"WarningsChecker": raise NotImplementedError() @overload # noqa: F811 def ... True raise RuntimeError("Cannot enter %r twice" % self) _list = super().
Read more >_pytest.recwarn — pytest documentation
def __enter__(self): if self._entered: __tracebackhide__ = True raise RuntimeError("Cannot enter %r twice" % self) self._list = super(WarningsRecorder ...
Read more >why is warning printed twice following temporary suppression?
It seems that temporarily suppressing warnings makes repeat warnings outside of the context manager display repeatedly. Example: import warnings ...
Read more >DataStax Java Driver - Changelog
handleId should handle escaped double quotes. [bug] JAVA-983: QueryBuilder cannot handle collections containing function calls.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
lets go for the current idea then and take a look at my more complex plan when trouble happens
@RonnyPfannschmidt I see what you mean, but TBH I’m not sure it is worth the trouble because we are only resetting the flag back to its initial state, which has no impact in future maintenance.