Python:代码覆盖率工具coverage

article/2025/10/23 10:26:02

简介:覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。

安装:

pip install coverage

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

官方提供2种统计结果方式:

1、Coverage 命令行2、Coverage API 

快速使用:单元测试运行命令以“python”开头,只需将初始“python”替换为“coverage run”即可。

unittest范例:被测代码demo.py

class CalcDemo:def __init__(self, x, y):self.x = xself.y = ydef plus(self):return self.x + self.ydef subtract(self):return self.x - self.ydef multiply(self):return self.x * self.ydef divide(self):return self.x / self.y

单元测试源码:test_demo.py

import unittest
from demo import CalcDemoclass TestDemo(unittest.TestCase):def test_plus(self):self.assertEquals(CalcDemo(6, 4).plus(), 10)def test_subtract(self):self.assertEquals(CalcDemo(6, 4).subtract(), 2)if __name__ == '__main__':unittest.main(verbosity=2)

运行单元测试:python test_demo.py

图片

运行代码覆盖率工具coverage:coverage run test_demo.py

图片

生成简易版覆盖结果:coverage report

图片

生成覆盖率统计详细结果报告:coverage html -d my_coverage_result

其中my_coverage_result 是自定义生成的报告的目录名称。

图片

打开目录内index.html,点击被测的目标demo.py

图片

参数说明:

statements:代码总行数,不包含空行和注释行
missing:未执行的代码行数
coverage:代码覆盖率

将会清晰的看到单元测试代码覆盖的情况。
其中:总行数为12行,已测试行数10行,所以覆盖率为:
10 / 12 = 0.83 即:代码覆盖率为83%

图片

点击界面红色 2 missing 还能看到专门标出了未测的代码地方。

图片

coverage.py 的API 位于一个名为coverage. 大多数接口都在coverage.Coverage类中。Coverage 对象上的方法大致对应于命令行界面中可用的操作

范例:

import coverage
import unittest# 实例化一个对象
cov = coverage.coverage()
cov.start()# 测试套件
suite = unittest.defaultTestLoader.discover("./", "test_demo.py")
unittest.TextTestRunner().run(suite)# 结束分析
cov.stop()# 结果保存
cov.save()# 命令行模式展示结果
cov.report()# 生成HTML覆盖率报告
cov.html_report(directory='result_html')

执行结果:

图片

同样会生成result_html的自定义目录报告,打开index.html,均可点击对应文件查看代码覆盖的情况。

图片

查看demo.py的覆盖情况:

图片

pytest范例:被测代码demo.py

建议安装插件:pytest-cov

安装pytest-cov:

pip install pytest-cov

用法1:pytest --cov

图片

图片

用法2:pytest --cov=src src即目标内全部文件的代码

例如src目录下有3个文件:a.py、b.py、c.py

图片

执行结果:

在这里插入图片描述

图片

生成报告:pytest --cov=src --cov-report=html

图片

查看报告:

图片

自此,代码覆盖率工具coverage命令行模式,API模式,以及在unittest和pytest的使用介绍完毕。

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/x4hedioC.shtml

相关文章

configure--prefix

本文主要说明--prefix参数的作用,其主要用在编译安装源代码应用中的./configure环节。 ./configure --help 查看详细的说明帮助 1、源码安装一般包括几个步骤:配置(configure),编译(make)&…

路由策略 匹配工具 IP-Prefix

⦁ p-prefix-name:指定地址前缀列表的名称。字符串形式,长度范围是1~169,不支持空格,区分大小写。 ⦁ index index-number:指定本匹配项在地址前缀列表中的序号。整数形式,取值范围是1&am…

CondaValueError: The target prefix is the base prefix. Aborting.

报错截图 错误原因 conda命令错误 正确做法 conda create -n py38 python3.8

zuul 里面的 prefix 和 strip-prefix 怎么使用

首先两个是配置路由前缀的, 下面是我网上找的一段话: prefix :前缀,当请求匹配前缀时会进行代理strip-prefix :代理前缀默认会从请求路径中移除,通过该设置关闭移除功能, 当 stripPrefixtrue …

Trie树(Prefix Tree)介绍

本文用尽量简洁的语言介绍一种树形数据结构 —— Trie树。 一、什么是Trie树 Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树 或 键树,是一种多叉树结构。如下图: 上图是一棵Trie树,表示了关键字集…

configure --prefix=/的作用和用法

非root用户安装python和gcc的时候,总是需要设定这个,只知道是个路径,具体是什么路径,代表什么不清楚。 不明白就百度: configure --prefix/是干啥用的?这个路径代表了什么? Configure是一个可…

前缀和(Prefix Sum)

前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度,可以在 O ( 1 ) O(1) O(1)的时间复杂度内求出区间和。 一…

CMAKE_INSTALL_PREFIX

一、定义 CMAKE_INSTALL_PREFIX为cmake的内置变量,用于指定cmake执行install命令时,安装的路径前缀。Linux下的默认路径是/usr/local ,Windows下默认路径是 C:/Program Files/${PROJECT_NAME} 二、用…

IP-Prefix List

地址前缀列表 一、IP-Prefix List二、语法及匹配规则1、语法2、匹配规则 三、配置案例1、拓扑2、分析ACL实现IP-Prefix List实现 四、IE考试题思考题 在进行配置案例前先了解一下基础知识 一、IP-Prefix List IP-Prefix List:能够同时匹配网络号和前缀长度 性能及可…

【脚本】更新依赖库pkgconfig文件中的prefix设置

在本地编译和安装了某个库后,如果其lib目录下存在pkgconfig子目录,则子目录下会存在若干.pc文件,文件中会有prefix的配置(该配置标识当前库的安装路径),当要把该库拷贝到其他机器上时,如果库的路…

Elasticsearch学习--查询(prefix、wildcard、regexp、fuzzy)

一、前缀搜索 prefix 不计算相关度评分性能较差前缀搜索匹配的是分词后的词项前缀搜索没有缓存前缀搜索尽可能把前缀长度设置的更长 GET product/_search {"query": {"fuzzy": {"name": {"value": "product1"}}} } index…

bgp 使用route-map设置Local perference(本地优先属性)配置与详解

实验目的: 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先。 实验拓扑: 接口IP配置及bgp基础配置详见 CSDNhttps://mp.csdn.net/mp_blog/creation/editor?spm1001.2014.3001.5352 查看R3与R4的路由…

使用route-map 配置BGP本地优先级

一、实验目的: 1、掌握基于route-map的本地优先配置方法。 2、使用route-map配置可以定置基于目标网络的本地优先级。 二、拓扑图: 三、配置BGP基本的配置: 1、配置各路由器的IP地址和BGP协议。配置完之后,查看一下R3和R4的路由表…

Cisco route-map 源地址路由配置

拓朴图: 案例: 公司内部使用的是一条拨号光纤和一条固定专线光纤,默认是指向拨号光纤出口那个网关出去,现在2网段有两台服务器(WEB、Mail)映射到公网,让外部来访问。 办公区因工作需要&#xf…

bgp route-map应用 配置 学习笔记

先全运行bgp R2 router bgp 2 no auto-summary no synchronzation bgp router-id 2.2.2.2 neighbor 12.1.1.1 remtotes as 10 neighbor 24.1.1.4 remote-as 10r1: router bgp 10 no auto-summary no synchronization bgp router-id 1.1.1.1 neighbor 12.1.1.2…

重分布和Route-MAP

一般在做重分布的时候用route-map较多,当然也可以用分发列表或者前缀列表等等,重分布的时候为了干掉不需要的路由,节约路由器CPU和转发效率可以使用route-map,当然route-map也可以用在其他的场景。 本次实验将ospf与rip重分布来使…

使用Route-Map过滤BGP的路由

实验目的 1、掌握使用Route-Map过滤BGP的路由。 实验拓扑 接口ip配置与bgp基础配置详见: CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125210020查看R3的路由表: R3#show ip route Gateway of last resort is not set1.0.0.0/24 is subnetted…

基于Route-map的路由过滤配置详解

实验目的: 1、掌握基于Route-map的路由过滤配置方法。 2、掌握route-map的命令语法。 实验拓扑: 步骤1:接口ip配置路由协议基础配置重分发详见CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125018583查看R1、R3路由表 R1#show ip route Gateway …

带你轻轻松松了解route-map

一、Route-map概述 1.技术背景 首先来初步认识一下route-map。看上图,我们在R2上,将OSPF路由重发布进RIP,前面已经说过了,在重发布时,可以使用metric关键字来设置路由被重发布进RIP后的metric,这里设置为…

Route-Map个人理解及实验解析

Route-Map:功能性非常强的策略列表,可以用来过滤路由也可以调整路由的属性,自身具备过滤功能。 Route-Map的作用: 1.在重发布的过程中做route-map,重发布过程中可以改变路由的属性;(次要作用) 2.PBR 策略路…