我们使用 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和测试文件之间导入。

10-06 03:52