如何使 py.test --cov 跳过 virtualenv 目录
how to make py.test --cov skip virtualenv directory
我应该关心我的测试如何覆盖我在项目中使用的外部库吗?
py.test --cov 显示所有文件的覆盖方式,包括我的 virtualenv 目录中的文件。如何让输出只显示我编写的模块的覆盖范围?
在项目的根目录中,创建文件 .coveragerc
包含:
[run]
omit = path_to_libs_to_omit/*
根据您的设置,您可能需要添加 --cov-config=path/to/.coveragerc
作为 py.test 命令的选项。
您可以使用更多选项 to configure coverage。
您应该将模块的名称添加到 --cov
命令行选项,例如表单 pytest-cov
文档:
py.test --cov=myproj tests/
这将覆盖范围限制在模块 myproj
及其所有 sub-modules。
这是我设法做到的:
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/*
@alexamici 的答案对于 virtualenvs 是正确的,但为了完整性,添加 pyproject.toml
(python 项目的建议配置文件)设置:
[tool.coverage.run]
omit = [
"file/to/exclude.py",
"other/file.py",
"some/path/*"
]
一行,
echo -e "[run]\nomit = venv/*" > .coveragerc && pytest -v --cov
如果您在 CI 中使用它,或者只是因为 'venv' 而不想将 .coveragerc
添加到您的 git 存储库,这将非常方便。
我应该关心我的测试如何覆盖我在项目中使用的外部库吗?
py.test --cov 显示所有文件的覆盖方式,包括我的 virtualenv 目录中的文件。如何让输出只显示我编写的模块的覆盖范围?
在项目的根目录中,创建文件 .coveragerc
包含:
[run]
omit = path_to_libs_to_omit/*
根据您的设置,您可能需要添加 --cov-config=path/to/.coveragerc
作为 py.test 命令的选项。
您可以使用更多选项 to configure coverage。
您应该将模块的名称添加到 --cov
命令行选项,例如表单 pytest-cov
文档:
py.test --cov=myproj tests/
这将覆盖范围限制在模块 myproj
及其所有 sub-modules。
这是我设法做到的:
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/*
@alexamici 的答案对于 virtualenvs 是正确的,但为了完整性,添加 pyproject.toml
(python 项目的建议配置文件)设置:
[tool.coverage.run]
omit = [
"file/to/exclude.py",
"other/file.py",
"some/path/*"
]
一行,
echo -e "[run]\nomit = venv/*" > .coveragerc && pytest -v --cov
如果您在 CI 中使用它,或者只是因为 'venv' 而不想将 .coveragerc
添加到您的 git 存储库,这将非常方便。