pytest 单元测试覆盖率
pytest-cov
是一个用于测量 Python 代码测试覆盖率的 pytest 插件。它允许你在运行测试时自动收集覆盖率数据,并在测试完成后显示一个详细的报告。这对于确保你的代码库被充分测试非常有用。以下是如何使用 pytest-cov
的基本步骤:
安装
首先,你需要确保已经安装了 pytest
。如果尚未安装,可以通过 pip 安装它:
1 | pip install pytest |
然后,安装 pytest-cov
:
1 | pip install pytest-cov |
使用
安装后,你可以在命令行中使用 --cov
选项来运行 pytest 并收集覆盖率数据。
示例
假设你的项目结构如下:
1 | your_project/ |
在命令行中,你可以运行以下命令来收集 your_module
目录下的代码覆盖率数据:
1 | pytest --cov=your_module |
这将在测试运行后显示一个覆盖率摘要,并生成一个 HTML 报告(如果配置了的话,但默认情况下可能只显示命令行报告)。
配置
虽然 pytest-cov
提供了许多命令行选项,但你可能希望将配置放入项目的 pytest.ini
或 setup.cfg
文件中,以便更容易地复用配置。
pytest.ini 示例
1 | [pytest] |
这个配置会添加三个选项到每次 pytest 运行中:
--cov=your_module
:指定要测量覆盖率的模块或包。--cov-report=term-missing
:在终端中生成一个包含缺失行的报告。--cov-fail-under=90
:如果覆盖率低于 90%,则让 pytest 失败。
报告
pytest-cov
支持多种报告格式,包括但不限于:
- 终端报告(默认)
- HTML
- XML
- Annotate(将覆盖率数据直接添加到源代码中)
你可以通过命令行选项(如 --cov-report=html
)或配置文件来选择不同的报告格式。
注意事项
- 确保你的测试目录(如
tests/
)没有被包含在覆盖率测量中,除非你想测量测试代码本身。 - 使用
pytest-cov
可能会使测试运行稍微变慢,因为它需要追踪执行了哪些代码行。 - 覆盖率是一个有用的指标,但它不是衡量测试质量的唯一标准。确保你的测试覆盖了所有重要的逻辑路径和边界情况。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AGI Explained!
评论