Skip to content

Cannot enter WarningsChecker twice #4617

Closed
@Sup3rGeo

Description

@Sup3rGeo
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    plugin: warningsrelated to the warnings builtin plugintype: enhancementnew feature or API change, should be merged into features branch

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions