在pytest中运行完整测试时发生导入文件不匹配错误,但在单独运行时通过测试

时间:2019-12-22 14:16:44

标签: python pytest

使用命令python -m pytest tests运行完整测试时,它失败,并导入文件不匹配错误。

import file mismatch:
imported module 'test_simplifyvcf_integrations' has this __file__ attribute:
  /home/promechpc5/Desktop/VCF-SimplifyDev/tests/test_integrations/test_simplifyvcf_integrations.py
which is not the same as the test file we want to collect:
  /home/promechpc5/Desktop/VCF-SimplifyDev/tests/testfiles/TestFullApp/test_simplifyvcf_integrations.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

在这里,显示的错误是test_simplifyvcf_integration.py,它位于tests文件夹下。但是,当我使用命令python -m pytest tests/test_integrations/test_simplifyvcf_integrations.py单独运行测试时,它将通过所有测试。

2 个答案:

答案 0 :(得分:2)

解决方案在错误消息中:

  

和/或为测试文件模块使用唯一的基名

您必须确保您的测试中具有唯一的模块名称-pytest会将它们全部提升到顶级名称空间中 ,除非您添加__init__.py文件以使它们是不同的包

因此,您的选择是:

  • 重命名相同的文件
  • 添加一些__init__.py文件

答案 1 :(得分:0)

这一直是与pytest特别相关的问题,因此您不必担心,因为它仅与缓存的文件有关。

步骤1从测试目录中删除所有__pycache__文件夹。

第2步,根据您用来停止生成这些缓存的方式,在您的bashrc / zshrc文件中添加以下代码段。

export PYTHONDONTWRITEBYTECODE=1