如何分析 Python 测试代码覆盖率?

【Python】什么是代码覆盖率? 代码覆盖率(Code Coverage) 代码覆盖率统计是用来发现没有被测试覆盖的代码 代码覆盖率统计不能完全用来衡量代码质量 意义何在? 了解测试情况,评估项目风险 发现测试死角、冗余代码、废弃代码 度量自动化用例 为自动化用例提供覆盖率统计情况,分析覆盖率报告,完善自动化用例 精准回归 构建代码调用关系,精准的确定回归测试范围,避免了全量回归造成测试资源的浪费 如何做代码覆盖率? 语句覆盖(StatementCoverage)——最弱覆盖 又称之为:行覆盖(LineCoverage)/段覆盖( 阅读详情

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。

Coverage不仅支持分支覆盖率统计,还可以生成HTML/XML报告。并且XML报告可以结合Jenkins和Sonar集成工具一起使用。

Coverage官方文档:http://coverage.readthedocs.org/en/latest/

安装

Coverage作为Python的一个第三方库,使用时需要先安装,使用pip命令进行安装。
安装命令:pip install coverage

C:\\Users\\TynamYang>pip install coverage
Collecting coverage
Downloading coverage\-5.1-cp37-cp37m-win32.whl \(204 kB\) |████████████████████████████████| 204 kB 731 kB/s
Installing collected packages: coverage
Successfully installed coverage\-5.1 C:\\Users\\TynamYang\>

安装完成后可以看到安装的版本:coverage-5.1
安装完成后使用coverage,coverage有两种使用方法,一种是在命令行中使用,一种是调用API使用。方便控制部分需要测试的代码。

命令行中使用

1、基本参数
命令行中使用文档:http://coverage.readthedocs.org/en/latest/cmd.html
命令行中使用时常用参数:

  • run – 运行Python程序并收集执行数据

  • report – 报告覆盖率结果

  • html – 生成HTML文件,内容含覆盖率结果列表

  • json – 生成JSON文件,内容含覆盖率结果

  • xml – 生成XML报告文件,内容含覆盖率结果

  • erase – 清除之前收集的覆盖率数据

  • combine – 合并多个数据文件

  • debug – 获取调试信息

可以使用help命令查看帮助:coverage help

2、运行代码收集信息
在使用coverage时,基本需要两步运行,第一步运行源代码,收集被测试的源代码覆盖率的信息,第二步生成代码覆盖率的信息报告。
如下测试代码:

#test.py
# coding:utf-8

import unittest

def add_numb(a, b):
    return a + b

def division_numb(a, b):
    return a / b

class Test(unittest.TestCase):
    def test_add_1(self):
        self.assertEqual(add_numb(1,1), 2)

    def test_add_2(self):
        self.assertEqual(add_numb(2,0), 1)

    def test_division_1(self):
        self.assertEqual(division_numb(2,1), 2)

    def test_division_2(self):
        self.assertEqual(division_numb(2,0), 2)

if __name__ == "__main__":
    unittest.main(verbosity=2)

使用命令运行:coverage run test.py

C:\\Users\\TynamYang\\Desktop> coverage run test.py
test\_add\_1 \(\_\_main\_\_.Test\) ... ok
test\_add\_2 \(\_\_main\_\_.Test\) ... FAIL
test\_division\_1 \(\_\_main\_\_.Test\) ... ok
test\_division\_2 \(\_\_main\_\_.Test\) ... ERROR \====================================================================== ERROR: test\_division\_2 \(\_\_main\_\_.Test\) \---------------------------------------------------------------------- Traceback \(most recent call last\):
File "test.py", line 22, in test\_division\_2
self.assertEqual\(division\_numb\(2,0\), 2\)
File "test.py", line 9, in division\_numb return a / b
ZeroDivisionError: division by zero \====================================================================== FAIL: test\_add\_2 \(\_\_main\_\_.Test\) \---------------------------------------------------------------------- Traceback \(most recent call last\):
File "test.py", line 16, in test\_add\_2
self.assertEqual\(add\_numb\(2,0\), 1\)
AssertionError: 2 \!= 1

---------------------------------------------------------------------- Ran 4 tests in 0.003s

FAILED \(failures\=1, errors=1\)
PS C:\\Users\\TynamYang\\Desktop\>

代码执行完成后会生成一个覆盖率统计结果文件:.coverage。该文件名可通过设置COVERAGE_FILE环境变量进行修改。

3、生成报告
查看报告有两种方式,一种是在当前命令行模式下查看,一种是生成HTML报告文件查看。
命令行模式下查看
根据运行代码后生成的.coverage文件,使用report参数可在命令行模式下查看覆盖率统计结果。
使用命令:coverage report

PS C:\\Users\\TynamYang\\Desktop> coverage report
Name      Stmts   Miss  Cover \----------------------------- test.py 16      0   100\% PS C:\\Users\\TynamYang\\Desktop\>

由结果可以得知,执行的test.py文件,代码覆盖率是100%
结果展示中的字段含义:

  • tmts:语句总数

  • Miss:未执行到的语句数

  • Cover:覆盖率,计算公式 Cover=(Stmts-Miss)/Stmts

生成HTML报告文件
使用命令生成HTML报告:coverage html -d covhtml
其中参数-d是指定生成的html所在的文件夹名
命令执行完成后会生成一个cov.html文件。

文件中的index.html文件覆盖率数据统计。
也可以看一些示例:https://nedbatchelder.com/files/sample_coverage_html/

各字段说明:

  • Stmts 总的有效代码行数(不包含空行和注释行)

  • Miss 未执行的代码行数(不包含空行和注释行)

  • Branch 总分支数

  • BrMiss 未执行的分支数

  • Cover 代码覆盖率

  • Missing 未执行的代码部分在源文件中行号

以执行的测试原文件命名的文件,可以高亮显示覆盖和未覆盖的代码。如test_py.html。
也可以看一些示例,如http://nedbatchelder.com/code/coverage/sample_html/

调用API使用

调用API使用文档:http://coverage.readthedocs.org/en/latest/api.html

在python代码中通过调用coverage模块执行代码生成代码覆盖率的统计结果。使用方法也非常简单,如下示例:

if __name__ == "__main__":
    # 实例化对象
    cov = coverage.coverage()
    # 开始分析
    cov.start()
    suite = unittest.defaultTestLoader.discover(os.getcwd(), "test.py")
    unittest.TextTestRunner().run(suite)
    # 结束分析
    cov.stop()
    # 结果保存
    cov.save()
    # 命令行模式展示结果
    cov.report()
    # 生成HTML覆盖率报告
    cov.html_report(directory='covhtml')

作者:Tynam.Yang
出处:https://www.cnblogs.com/tynam/

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~
题图:pexels,CC0 授权。

好文章,我在看❤️

Python代码覆盖率分析工具Coverage 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage支不仅持分支覆盖率统计,还可以生成HTML/XML报告。并且XML报告可以结合Jenkins和Sonar集成工具一起使用。 阅读详情

相关推荐

coverage代码覆盖率测试工具:基本原理分析与使用

coverage环境描述 本文环境python3.5.2 coverage版本4.3.1 coverage概述 代码覆盖率工具主要是为了检查测试用例覆盖了多少业务处理代码,在Django项目中,通过编写的测试用例,来检查后端业务逻辑接口的逻辑覆盖程度,以达到全面测试,根据需要覆盖的重要的业务代码,从而提供测试用例的全面性,提高测试质量。 coverage的基本使用 首先我们先创建示例代码,代码如...

qq_33339479的博客 1万+

Python:代码覆盖率工具coverage

简介:覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。 安装: pip install coverage 官方文档:http://coverage.readthedocs.org/en/latest/ 官方提供2种统计结果方式: 1、Coverage 命令行 2、Coverage API 快速使用:单元测试

we chat:玩转测试开发 7790

如何用MiniMax M2自动生成API测试代码?Python实战教程(含完整示例)

本文详细介绍了如何利用MiniMax M2自动化生成Python API测试代码的实战方法。通过环境配置、客户端构建、测试代码生成等步骤,结合OpenAPI规范快速创建高质量的测试套件,显著提升自动化测试效率。教程包含完整示例代码,特别适合开发者和测试工程师学习API测试自动化实践。

ujm5678901的博客 842

【Python】coverage,一个有趣的 Python 库!

大家好,今天为大家分享一个有趣的 Python 库 - coveragepy。Github地址:https://github.com/nedbat/coveragepy在软件开发中,测试是确保代码质量和稳定性的关键步骤之一。而代码覆盖率则是衡量测试覆盖代码的程度的重要指标之一。Python coverage库是一款用于检测代码覆盖率的工具,本文将介绍如何安装、它的特性、基本功能、高级功能、实际应用...

fengdu78的博客 1036

Python单元测试实战:pytest框架核心特性与可维护测试代码编写指南

单元测试是软件工程中保障代码质量、降低技术债务的核心实践。其原理在于通过隔离测试最小代码单元(如函数、方法),验证其行为是否符合预期,从而在早期发现缺陷,提升代码可维护性与重构信心。在Python生态中,pytest框架凭借其简洁的约定优于配置理念、强大的断言系统以及灵活的固件(Fixture)机制,成为实现高效单元测试的首选工具。通过pytest,开发者可以轻松管理测试资源生命周期,编写参数化测试用例,并利用Mock技术隔离外部依赖,构建出清晰、可维护的测试套件。这些实践对于构建健壮的后端服务、数据分析管

weixin_34159110的博客 345

Pure Persuit算法基础

Pure Persuit算法本身的原理不难理解,它主要基于几何原理进行的设备控制,本身不考虑太多的运动学约束。同时机器人的路径跟踪效果应该会比较依赖于预瞄点。对于曲线部分而言,如果曲率很小而预瞄点很远的话,对于曲线的跟随性应该会很差。对于直线而言,如果设备在开始时与轨迹有横向偏差,则在运动过程中机器人会逐渐收敛到曲线,但是收敛速度取决于预瞄点距离。

YiYeZhiNian的博客 1521

sonar覆盖率怎么统计的_如何分析 Python 测试代码覆盖率?

优质文章,第一时间送达!在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage不仅支持分支覆盖率统计,还可以生成HTM...

weixin_39831039的博客 1124

大模型-高通qnn基础

提供较低级别、高度可定制的统一API,通过单独的库加速所有AI加速器核心上的AI模型, 可以直接用于针对特定的加速器核心或从流行的运行时(包括Qualcomm Neural Processing SDK、TensorFlow Lite和ONNX运行时)委派工作负载。一个支持异构计算、系统级配置的一体化SDK,旨在将AI工作负载引导到我们平台上的所有加速器核心。为开发人员提供灵活性,包括核心间协作支持和其他高级功能。是一个为训练好的神经网络模型提供高级量化和压缩技术的库。

点滴的岁月 4083

python代码覆盖率测试_如何分析 Python 测试代码覆盖率?

原标题:如何分析 Python 测试代码覆盖率? 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage不仅支持分支覆...

weixin_39700063的博客 343

自监督学习原理与代码实战案例讲解

自监督学习原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 自监督学习的起源与发展 1.1.1 监督学习的局限性

AI天才研究院 623

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2622

coverage 覆盖多个测试文件时_如何分析 Python 测试代码覆盖率?

在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage不仅支持分支覆盖率统计,还可以生成HTML/XML报告...

weixin_42165490的博客 375

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

Python测试 Coverage代码覆盖率

本来是在赶作业的,但coverage真的太好用了太好用了太好用了太好用了,必须得给他写一篇教程! 目录1. 安装coverage2. 编写自己的工程文件工具类测试代码3. coverage生成报告生成可视化报告生成多个文件的报告4. 参考资料 1. 安装coverage pip install coverage 2. 编写自己的工程文件 这里我编写了一个简单的工程文件为例,实际中可以直接用在你自...

UncleDong的博客 2811

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 双机位C卷 200分)

这个问题要求模拟打印机的文件调度过程,关键在于正确处理每个打印机队列中的文件优先级和文件进入队列的顺序。优先级处理:每个文件有一个 1 到 10 的优先级,数字越大优先级越高,打印机应首先处理优先级最高的文件。在打印机 1 的队列中插入了 3 个文件,分别有不同的优先级,其中编号 3 的文件优先级最高,先被取出。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10 不同的 优先级,其中数字越大优先级越高。在打印机 2 的队列中插入了 1 个文件,优先级为 1,因此它被首先取出。

学Java,找哪吒 1079

【人工智能之深度学习】15. 工业时序预测实战:LSTM与TCN融合的装备故障预警系统设计与实现

摘要:工业装备故障预警是智能制造领域的核心技术之一,其通过分析传感器时序数据实现故障提前预测,可显著降低运维成本并提升设备可靠性。本文针对工业时序数据多源异构、非平稳性、噪声干扰及样本不平衡等挑战,提出一种LSTM与TCN融合的故障预警架构——利用TCN捕捉局部时序特征,结合注意力增强LSTM建模长期依赖关系,通过门控机制实现特征自适应融合。以3MW风电齿轮箱为研究对象,设计包含数据预处理、特征工程、模型训练及部署的完整流程,实验结果表明,该融合模型准确率达94.6%,故障预测提前量较单一模型提升30%以上

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1440

python代码覆盖率测试_Python代码覆盖率分析工具----Coverage

本文来自Tynam Yang投稿简介在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage支不仅持分支覆盖率统计,还可...

weixin_39915267的博客 202

AI编程工具到底是初学者的绊脚石还是垫脚石?

现在是AI时代,我们要做的,是学会拥抱AI、使用AI,成为AI的驾驭者,如果你因为害怕使用AI学不到东西,那么大可不必,因为AI必然是今后的趋势,相信会用AI在今后的求职面试中也会有很大的占比。另外我之前写了多篇有关AI编程开发工具Trae的使用技巧和教程,需要的话你可以关注公众号后通过菜单栏获取。另外我也把所有Trae相关的文章整合到了腾讯ima知识库,感兴趣的可以关注公众号以后回复。

cpp加油站的专栏 184

coverage 覆盖多个测试文件时_Python代码覆盖率分析工具Coverage

本文来自Tynam Yang投稿简介在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。Coverage支不仅持分支覆盖率...

weixin_40002224的博客 735

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python怎么做单元测试

在Python中,最常用的单元测试框架是unittest和pytest

svygh123的专栏 1189

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LLM辅助Python单元测试生成:pytest与coverage实战指南

单元测试是保障代码质量、提升软件可维护性的核心工程实践,其原理在于通过自动化脚本验证代码单元(函数、方法)在各种输入下的行为是否符合预期。在Python生态中,pytest凭借其简洁语法和强大夹具系统成为主流测试框架,而coverage工具则能精准量化测试对源代码的覆盖程度,为质量评估提供客观依据。随着大语言模型(LLM)在代码生成与理解能力上的突破,其技术价值正从辅助编程向软件工程全流程渗透。将LLM引入测试环节,能够基于对代码语义的理解,快速生成测试用例初稿,显著降低编写重复性断言和构造测试数据的时间成

weixin_33796205的博客 412

AI生成测试代码的靠谱姿势:Python智能用例生成框架实战

在软件开发领域,自动化测试是保障代码质量的核心手段,而如何高效生成有效测试用例一直是工程实践的痛点。随着AI大模型能力的增强,利用其辅助编写单元测试逐渐成为测试开发与后端开发关注的热点。然而,直接让大模型裸写测试代码往往会产生大量弱断言与“假绿”用例,难以发现真实缺陷。将静态分析、用例骨架与运行反馈相结合,构建一个智能测试生成闭环,能够显著提升测试的可靠性与覆盖率。本文结合Python语言与AST语法树解析、pytest框架及覆盖率反馈,系统拆解如何实现一套可落地的测试用例自动生成与优化流程,并分享接入CI

weixin_28839439的博客 307

为什么顶尖公司都在用AI生成Python测试代码?真相令人震惊

掌握Python自动化测试AI生成代码新趋势,提升测试效率与覆盖率。揭秘顶尖公司如何结合AI技术自动生成高可靠性测试用例,适用于Web、API及复杂业务场景,大幅缩短开发周期。智能分析代码结构,精准定位漏洞,节省90%重复工作。值得收藏,点击了解实现方法。

PixelShoal的博客 219

Python进行单元测试是怎么做的?

我指示pytest生成一个带有分支覆盖的HTML覆盖报告。它应该将结果存储在htmlcov中。而不是为所有文件生成覆盖率报告,我告诉覆盖率只使用alarm.py。

kk_lzvvkpj的博客 1014
上一篇: 提高爬虫开发效率的几个小工具
下一篇: pip 发布新版本了!
codingpy
博客等级 码龄11年 1867粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值