Pytest cov 不读取 pyproject.toml

use*_*621 5 python code-coverage pytest pytest-cov pyproject.toml

Pytest cov 未从 pyproject.toml 文件中读取其设置。我正在使用 nox,因此我使用以下命令运行测试:

python3 -m nox
Run Code Online (Sandbox Code Playgroud)

即使没有 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%
Run Code Online (Sandbox Code Playgroud)

此处有可重现错误的代码。要运行它,您需要安装诗歌安装 nox

hoe*_*ing 8

将评论变成答案:

\n

检查当前src目录的处理情况。现在,它似乎是一个名称空间包,这不是您想要的。要么切换到src布局:

\n
# pyproject.toml\n\n[tool.poetry]\n...\npackages = [\n    { include = 'project', from = 'src' }\n]\n\n[tool.coverage.run]\n...\nsource = ['project']\n
Run Code Online (Sandbox Code Playgroud)\n

并修复导入test_code.py

\n
from src.project import code\n
Run Code Online (Sandbox Code Playgroud)\n

\n
from project import code\n
Run Code Online (Sandbox Code Playgroud)\n

或删除src目录:

\n
rootdir\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_code.py\n
Run Code Online (Sandbox Code Playgroud)\n

并修复导入test_code.py

\n