question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

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:closed
  • Created 5 years ago
  • Comments:10 (10 by maintainers)

github_iconTop GitHub Comments

1reaction
RonnyPfannschmidtcommented, Jan 9, 2019

lets go for the current idea then and take a look at my more complex plan when trouble happens

0reactions
nicoddemuscommented, Jan 9, 2019

@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.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found