Issue45864
Created on 2021-11-22 10:28 by adamchainz, last changed 2022-04-11 14:59 by admin. This issue is now closed.
| Messages (3) | |||
|---|---|---|---|
| msg406756 - (view) | Author: Adam Johnson (adamchainz) * | Date: 2021-11-22 10:28 | |
unittest's test discovery does not descend into directories without `__init__.py`. This avoids discovering test modules that are otherwise valid and importable, after PEP 420. I've seen this more than once where there were valid looking test files not being discovered, and they bit rot. The tests had been run individually when created but never again. (I created [flake8-no-pep420](https://pypi.org/project/flake8-no-pep420/) to avoid this problem on my projects.) For example, take this directory structure: ``` $ tree . └── tests └── test_thing.py 1 directory, 1 file $ cat tests/test_thing.py 1/0 ``` It's valid to import the naughty file, which crashes: ``` $ python -c 'import tests.test_thing' Traceback (most recent call last): File "<string>", line 1, in <module> File "/.../tests/test_thing.py", line 1, in <module> 1/0 ZeroDivisionError: division by zero ``` But unittest does not discover it: ``` $ python -m unittest ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK ``` But, after creating an empty `__init__.py`, the tests doth fail: ``` $ touch tests/__init__.py $ python -m unittest E ====================================================================== ERROR: tests.test_thing (unittest.loader._FailedTest) ---------------------------------------------------------------------- ImportError: Failed to import test module: tests.test_thing Traceback (most recent call last): File "/.../unittest/loader.py", line 436, in _find_test_path module = self._get_module_from_name(name) File "/.../unittest/loader.py", line 377, in _get_module_from_name __import__(name) File "/.../tests/test_thing.py", line 1, in <module> 1/0 ZeroDivisionError: division by zero ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (errors=1) ``` |
|||
| msg406759 - (view) | Author: Karthikeyan Singaravelan (xtreak) * ![]() |
Date: 2021-11-22 10:46 | |
This seems to be similar to https://bugs.python.org/issue23882 |
|||
| msg406760 - (view) | Author: Adam Johnson (adamchainz) * | Date: 2021-11-22 10:51 | |
It's exactly that ticket. I missed that when searching for duplicates - I only searched for "pep420" and not "namespace packages". Mea culpa. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:52 | admin | set | github: 90022 |
| 2021-11-22 10:51:25 | adamchainz | set | status: open -> closed stage: resolved |
| 2021-11-22 10:51:21 | adamchainz | set | resolution: duplicate messages: + msg406760 |
| 2021-11-22 10:46:19 | xtreak | set | nosy:
+ xtreak, methane messages: + msg406759 |
| 2021-11-22 10:28:02 | adamchainz | create | |
