Python单元测试框架覆盖率-Coverage

覆盖率介绍

首先来看看什么是单元测试覆盖率:

用来衡量单元测试对功能代码测试情况的是覆盖率, 它利用统计单元测试里对功能代码行, 以及分支、类等模拟场景数量, 去量化说明测试充分度。

代码覆盖率 = 代码的覆盖程度,一种度量方式。

它的度量方式包括但是不仅限于以下几种:

语句覆盖(度量被测代码中每个可执行语句是否被执行到了)

判定覆盖, 它也被称作分支覆盖, 其作用是度量程序里面每一个判定的分支,是否都已经被测试到了。

条件覆盖, 其度量的是, 判定之中的每一个子表达式的结果, true以及false, 是否被检测到了。

路径覆盖(度量了是否函数的每一个分支都被执行了)

组合覆盖等

那么对于项目又如果对它的单元测试覆盖率进行分析呢?

当然, 如同Java的那般, 类似的等等之类的, 也存在着属于自身的针对单元测试覆盖率进行统计的工具, 它, 就是其中的一种。

介绍与安装

有一种工具是专门用来统计代码覆盖率的, 借助这个工具能够检测出测试代码对于被测代码的覆盖情况到底怎么样。而且它能够将代码里没被执行的语句给予呈现, 还能呈现哪些语句是执行了的, 以此方便进行单测。另外, 它支持对分支覆盖率进行统计,并且能够生成HTML或者XML报告。

官方文档:

获取地址:

安装:

pip

使用帮助:

使用help命令查看帮助:$ help

使用

关于其运用, 较为简易, 径直通过run命令去施行已然撰写好的单元测试用例便可。

执行单元测试:

run test.py arg1 arg2

这里有着一个名为test.py的, 已然完成的测试用例脚本, arg1、arg2属于对于test.py进行执行之际所需要用到的参数。

执行完毕之后, 会自行产生一个覆盖率统计结果文件(数据文件)。当然, 这个文件当中诸多数字对我们而言查看起来并不便利。

所以我们使用另外一条命令查看覆盖统计结果: 。

这里

Stmts:表示语句总数

Miss:未执行到的语句数

Cover=(Stmts-Miss)/Stmts

当然也可以生成更加清理明了的html测试报告:

html -d

这里-d指定html文件夹。

所生成的报告直接去关联代码, 将覆盖以及未覆盖的代码进行高亮地显示, 具备排序的支持功能, -d去指定html这个文件夹地址。

通过点击其中的各个py文件可以看到各自的代码被执行情况

当然还可以通过API方式执行测试并统计覆盖率:

javascript 复制代码
`cov = coverage.coverage(source=["course_search"])
cov.start()
suite = unittest.defaultTestLoader.discover(os.getcwd(), "test_course_search.py")
unittest.TextTestRunner().run(suite)
cov.stop()
cov.report()
cov.html_report(directory="report_html_01")
`
相关推荐
小猴子爱上树7 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,一站式跨境电商翻译工具
python·音视频
溪语流沙7 小时前
【Web全栈进阶】OAuth实战——GitHub第三方登录
前端·python·github
计算机编程指导师7 小时前
【计算机毕设选题】基于Hadoop的全球企业邮件安全合规数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·毕业设计·课程设计·企业邮件
SimonKing7 小时前
零大模型依赖!SQLite FTS5 + jieba 打造纯本地知识库搜索
后端·python·程序员
慢云智慧空间7 小时前
从智能终端到空间AI,慢云科技如何重新定义智慧人居?
人工智能·python·科技
yi0117 小时前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
2601_962885727 小时前
如何用 Python 计算索提诺比率和卡玛比率?
开发语言·python
小小张说故事7 小时前
Python 的描述符到底是个啥?property 和 classmethod 底层都靠它,3 个例子讲透
python
kimnoic8 小时前
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
开发语言·python
外收内放8 小时前
Python基础语法练习题(64)
python·学习