You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pytest.skip in conftest/__init__ files doesn't work as expected #12371
Pytest has special mechanism to skip modules described here.
But when applying this to conftest.py (or __init__.py), this call skip entire package, not only that module. And this happened even with allow_module_level=False. For example:
# content of tests/test_package_A/confest.pyimportsysimportpytestifsys.version_info< (3, 11):
pytest.skip("Python>=3.11 is required. ", allow_module_level=False)
Pytest and operating system versions
pytest 8.2.1 MacOS Monterey 12.3.1 (21E258)
Expecting behaviour
1- Do not allow using pytest.skip(allow_module_level=False) in conftest.py (or __init__.py). The same, as It's not allowed for test modules. So, expected error message might be the same:
Using pytest.skip outside of a test will skip the entire module. If that's your intention, pass allow_module_level=True
2- And even more, I would suggest that another flag should be set explicitly to skip entire directory/package. For example:
pytest.skip("Python>=3.11 is required. ", allow_package_level=True) # package level flag specified here
🤖 Written by Claude Opus 5.5 via Claude Code for the pytest maintainers; I prompted it, it did the work, I read it.
Closing in favour of #15142, which settles what a conftest may raise at import: pytest.importorskip is supported and skips the directory; pytest.skip() (with or without allow_module_level), pytest.fail() and pytest.xfail() become a usage error naming the conftest, with a deprecation period for skip().
Activity
RonnyPfannschmidt commentedon May 26, 2024
I'd opt for entirely deprecatingly module level skip instead, import time ought to only allow declarative mechanisms
MishaVyb commentedon May 26, 2024
Probably, I'd agree with you. Anyway we should report an error in that case, instead of skipping everything silently
MishaVyb commentedon Jun 9, 2024
Is anyone interesting in it to open a PR? If no other who wish to, I would like to do it. It doesn't look difficult
But we need to consider, what behaviour should be in that case? Some verbose error message similar to this?
RonnyPfannschmidt commentedon Oct 6, 2026
🤖 Written by Claude Opus 5.5 via Claude Code for the pytest maintainers; I prompted it, it did the work, I read it.
Closing in favour of #15142, which settles what a conftest may raise at import:
pytest.importorskipis supported and skips the directory;pytest.skip()(with or withoutallow_module_level),pytest.fail()andpytest.xfail()become a usage error naming the conftest, with a deprecation period forskip().Generated by Claude Code