我们使用 py.test 。我们尝试将不同的conftest.py
文件放在不同的文件夹中,以拆分固定装置:
tests/api/
├── conftest.py
├── folder1
│ └── conftest.py
├── folder2
│ └── conftest.py
但是,在运行测试时,会发生此错误:
____ ERROR collecting api/folder1/conftest.py ____
import file mismatch:
imported module 'conftest' has this __file__ attribute:
/tests/api/folder2/conftest.py
which is not the same as the test file we want to collect:
/tests/api/folder1/conftest.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
这是为什么?如何解决?
PS。删除
__pycache__.pyc
没有帮助。PPS。每个文件夹中已经存在
__init__.py
文件。 最佳答案
您的用例听起来像this example in the pytest documentation。因此,我认为可以在不同级别上使用conftest.py
覆盖灯具。
您看到的错误可能与不正确的导入有关。您的测试代码是否直接从conftest文件中导入?您的conftest文件是从测试中导入的吗?您的进口商品是relative instead of absolute吗?如果其中任何一个是正确的,那可能是您的问题。我建议仅使用绝对导入,并避免在conftest.py
和测试文件之间导入。