-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
topic: collectionrelated to the collection phaserelated to the collection phase
Description
As first noted in #12074, below is an example project structure with two packages under the ns namespace that now fail to import after the changes introduced in 8.1.x:
ns
└── python
├── bar
│ ├── ns
│ │ ├── bar
│ │ └── test
│ │ ├── __init__.py
│ │ ├── bar.py
│ │ └── test_bar.py
│ └── pyproject.toml
└── foo
├── ns
│ ├── foo
│ └── test
│ ├── __init__.py
│ ├── foo.py
│ └── test_foo.py
└── pyproject.toml
Below are the contents of test_foo.py and foo.py. test_bar.py and bar.py look nearly identical.
# python/foo/ns/test/test_foo.py
from .foo import value
def test_foo():
assert value == "foo"
# python/foo/ns/test/foo.py
value = "foo"
In pytest==8.0.2, python -m pytest --import-mode=importlib correctly discovers and runs the tests from the top level ns directory. In pytest==8.1.1, python -m pytest --import-mode=importlib -o "consider_namespace_packages=true", results in the following error during collection:
========================== test session starts ===========================
platform darwin -- Python 3.9.16, pytest-8.1.1, pluggy-1.4.0
rootdir: /home/user/pytest-12074
collected 0 items / 2 errors
================================= ERRORS =================================
____________ ERROR collecting python/bar/ns/test/test_bar.py _____________
ImportError while importing test module '/home/user/pytest-12074/python/bar/ns/test/test_bar.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
python/bar/ns/test/test_bar.py:1: in <module>
from .bar import value
E ModuleNotFoundError: No module named 'test.bar'
____________ ERROR collecting python/foo/ns/test/test_foo.py _____________
ImportError while importing test module '/home/user/pytest-12074/python/foo/ns/test/test_foo.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
python/foo/ns/test/test_foo.py:1: in <module>
from .foo import value
E ModuleNotFoundError: No module named 'test.foo'
======================== short test summary info =========================
ERROR python/bar/ns/test/test_bar.py
ERROR python/foo/ns/test/test_foo.py
!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!
=========================== 2 errors in 0.04s ============================
To reproduce the issue clone https://github.com/aaraney/pytest-12074, pip install ns.foo and ns.bar, pip install the different versions of pytest and run with the aforementioned commands.
Metadata
Metadata
Assignees
Labels
topic: collectionrelated to the collection phaserelated to the collection phase