Pytest插件pytest-cov:优雅管理测试覆盖率

在软件开发中,测试覆盖率是评估测试质量的关键指标之一。为了更方便地统计和管理测试覆盖率,Pytest插件"pytest-cov"应运而生。本文将介绍"pytest-cov"的基本用法和优雅管理测试覆盖率的方法。

什么是pytest-cov?

pytest-cov 是Pytest的一个插件,它提供了一种简单而强大的方式来测量和报告代码的测试覆盖率。通过集成测试覆盖率工具,pytest-cov可以帮助开发者了解哪些部分的代码被测试覆盖,哪些部分还需要进一步的测试。

安装pytest-cov

在开始之前,首先需要安装"pytest-cov"。使用以下命令:

复制代码
pip install pytest pytest-cov

****pytest-cov基本用法

本篇文章以下的篇幅将根据一个实际的案例来介绍pytest-cov的基本用法。

假设你有一个名为my_project 的项目,其中包含一个名为 calculator 的模块,你想要使用pytest-cov来测试并测量 calculator模块的覆盖率。以下是一个简单的案例:

  1. 项目结构

    复制代码
    my_project/   ├── calculator/   │   ├── __init__.py   │   └── calculator.py   ├── tests/   │   ├── __init__.py   │   └── test_calculator.py   └── pytest.ini
  2. calculator.py代码内容:

    复制代码
    # my_project/calculator/calculator.py   def add(a, b):       return a + b   def subtract(a, b):       return a - b
  3. test_calculator.py代码内容:

    my_project/tests/test_calculator.py from calculator.calculator import add, subtract def test_add(): result = add(3, 5) assert result == 8 def test_subtract(): result = subtract(10, 4) assert result == 6

  4. pytest.ini的设置内容:

    复制代码
    # my_project/pytest.ini   [pytest]   addopts = --cov=calculator --cov-report=html
  5. 运行测试:

在项目的根目录下运行以下命令:

复制代码
 pytest tests/

此外如果想同时生成HTML格式的覆盖率报告,可以运行:

复制代码
 pytest --cov=calculator --cov-report=html tests/

这将运行 tests/ 目录下的测试,并使用pytest-cov测量 calculator 模块的覆盖率。HTML报告将生成在项目根目录下的 htmlcov文件夹中。执行完之后,打开htmlcov文件夹,打开index.html,内容如下截图:

如果更改测试文件的代码,比如删除一个测试函数 test_subtract那么,此时覆盖率就不应该是100%了,有兴趣的话,大家可以试一试。

通过这个简单的案例,你可以了解如何使用pytest-cov来测试和测量项目中特定模块的代码覆盖率。在实际项目中,你可以根据项目结构和需要进行适当的调整。

在后续的文章中将继续深入讲解覆盖率相关的内容,如果大家觉得内容还可以,还请多多点赞,转发,谢谢。

相关推荐
92year13 小时前
用Google ADK从零搭一个能调工具的AI Agent:Python实操全过程
python·ai·mcp
woxihuan12345613 小时前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
Jetev14 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
蛐蛐蛐14 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
m0_7020365314 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
2401_8463395615 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_9577808415 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_9577808415 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong22216 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_9010064716 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python