34

我应该关心我的测试如何覆盖我在项目中使用的外部库吗?

py.test --cov 显示如何覆盖所有文件,包括我的 virtualenv 目录中的文件。如何使输出仅显示我编写的模块的覆盖范围?

4

5 回答 5

55

在项目的根目录中,创建包含以下内容的文件.coveragerc

[run]
omit = path_to_libs_to_omit/*

根据您的设置,您可能需要将--cov-config=path/to/.coveragercas 选项添加到 py.test 命令。

您可以使用更多选项来配置覆盖范围

于 2016-01-08T00:43:28.160 回答
26

您应该将模块的名称添加到--cov命令行选项,例如表单pytest-cov文档:

py.test --cov=myproj tests/

这将覆盖范围限制为模块myproj及其所有子模块。

于 2016-01-09T19:05:27.853 回答
6

@alexamici 答案是 virtualenvs 的正确答案,但为了完整起见,添加pyproject.toml(python 项目的建议配置文件)设置:

[tool.coverage.run]
omit = [
    "file/to/exclude.py",
    "other/file.py",
    "some/path/*"
    ]
于 2021-07-16T14:42:46.497 回答
0

单线,</p>

echo -e "[run]\nomit = venv/*" > .coveragerc && pytest -v --cov

如果你在 CI 中使用它或者你不想.coveragerc仅仅因为 'venv' 而将它添加到你的 git repo 中,那就很方便了。

于 2021-09-07T05:37:53.010 回答
0

这就是我设法做到的方式: pytest.py

[pytest]
python_files = tests.py test_*.py *_tests.py
addopts = -v -p no:warnings --nomigrations --cov=. --no-cov-on-fail

coveragerc

[run]
omit = venv/*
于 2021-04-09T10:34:55.740 回答