【发布时间】:2020-07-09 22:39:53
【问题描述】:
Pytest cov 未从 pyproject.toml 文件中读取其设置。我正在使用 nox,所以我使用以下命令运行测试:
python3 -m nox
即使没有 nox,我似乎也有同样的问题。
其实在运行了poetry install之后:
-
poetry run pytest --cov=src通过测试 -
poetry run pytest --cov未通过测试
特别是,当测试失败时,我有以下输出(输出被切到最重要的东西):
WARNING: Failed to generate report: No data to report.
/Users/matteo/Library/Caches/pypoetry/virtualenvs/project-Nz69kfmJ-py3.7/lib/python3.7/site-packages/pytest_cov/plugin.py:271: PytestWarning: Failed to generate report: No data to report.
self.cov_controller.finish()
---------- coverage: platform darwin, python 3.7.7-final-0 -----------
FAIL Required test coverage of 100.0% not reached. Total coverage: 0.00%
Code with a reproducible error here。 要运行它,您需要 install poetry 和 install nox。
【问题讨论】:
-
究竟是什么没有通过测试?您已经添加了两次相同的命令。
-
我很抱歉。在上面修复它
-
在我看来,您使用的
src布局错误。src目录的含义是避免从存储库中意外导入代码,确保始终安装包。poetry支持src布局;在您的情况下,您必须将packages = [{ include = 'project', from = 'src' }]添加到tool.poetry部分并将source = ['project']添加到tool.coverage.run。 -
如果您不需要
src布局,您可以完全删除src目录。无论如何,from src.project import code应该是固定的。你的根包是project,而不是src。 -
这是一个重要的教训,谢谢。我看到只需更改导入即可解决问题。如果您想将其写为答案,我会接受,谢谢!
标签: python pytest code-coverage pytest-cov pyproject.toml