在pytest中导入文件不匹配

import file mismatch in pytest

我在包中有一个文件名中有 'test',当我 运行 pytest 时我得到一个错误

import file mismatch:
imported module 'my_project.my_file_test' has this __file__ attribute:
  /my_project/src/my_project/build/lib/python2.7/site-packages/foo/my_file_test.py
which is not the same as the test file we want to collect:
  /my_project/src/my_project/build/private/python2.7/lib/foo/my_file_test.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules

如果我从文件中删除 'test' 它工作正常但遗憾的是我无法更改它。

所以问题是如何告诉pytest忽略这个文件?

最后很简单,我只需要将测试文件模式添加到 pytest.ini 文件中即可:

python_files = test_*.py

所以 pytest 停止查找名称末尾带有 test 的文件,这是默认情况下所做的。

在我的例子中,测试目录中缺少 __init__.py 文件。

即使我的文件名与其他文件名不完全相同,我也遇到了同样的问题。

我有 test_01_login_chrome.pytest_01_login_firefox.py

我得到的错误

import file mismatch:
imported module 'test_01_login_chrome.py' has this __file__ attribute:
  /Users/avicii/PycharmProjects/Omni_Sanity/TestCase/Firefox_TestCases/test_01_login_chrome.py
which is not the same as the test file we want to collect:
  /Users/avicii/PycharmProjects/Omni_Sanity/TestCase/01_Chrome_TestCases/test_01_login_chrome.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules

我尝试将 __init__.py 添加到测试用例文件夹,但没有成功。

然后我尝试了一个解决方法。我为我的测试用例创建了一个 python 包,它默认创建 __init__.py,然后将我的测试用例移动到该文件夹​​。

我的问题已经解决了。