聊聊 Python 代码覆盖率工具 - 大咖爱爬虫
1. 代码覆盖率
单元测试代码覆盖率作为一种度量方式,可以计算单元测试用例对于被测代码的覆盖程度,即:被执行的代码数量和代码总数量的比值
统计代码覆盖率 ,经常在单元测试后再进行,可以为测试结果提供评判依据
Python 项目最常使用的代码覆盖率统计工具就是: C overage
2. Coverage
Coverage 是用于统计 Python 代码覆盖率的工具,不仅支持分支覆盖率统计,生成 HTML 格式的统计报告,而且可以集成到 Jenkins 中使用
安装 Coverage 依赖同样是使用 pip 安装
# 安装 Coverage 依赖 pip3 install coverage
Coverage 官方提供了 2 种方式,用于统计代码覆盖率,分别是:
1、Coverage 命令行
2、Coverage API
更详细的介绍可以参考官方文档:
https://coverage.readthedocs.io/en/latest/
3. 实战一下
首先,用 Python 编写一段简单被测代码,如下:
# 被测代码
# main.py
def get_level(cource):"""自定义的方法:param cource:成绩:return:"""if cource >= 90:return "优秀"elif cource >= 80:return "良好"elif cource >= 60:return "合格"elif cource >= 40:return "不合格"else:return "差"
加python学习qq群:775690737 送python零基础入门学习资料+99个源码
然后,编写单元测试用例
根据上面的被测方法,这里使用 Python 自带的 unitte st 依赖库来编写 2 个简单的测试用例
并且,特意只 覆盖到了上面 方法的 2 个分支,即:优秀和良好
# 单元测试
# test_get_level.py
import unittestfrom main import *class GetLevel(unittest.TestCase):def test_get_level1(self):self.assertEquals(get_level(90), "优秀")def test_get_level2(self):self.assertEquals(get_level(80), "良好")if __name__ == '__main__':unittest.main(verbosity=2)
加python学习qq群:775690737 送python零基础入门学习资料+99个源码
右键运行单元测试,会发现两个测试用例都是通过的
接下来,分别使用 Coverage 命令和 API 在本地生成代码覆盖率统计报告
1、Coverage 命令
在项目根目录下,运行 coverage run 命令,生成 .coverage 文件,搜集被测试源代码覆盖率的信息
# 1、搜集被测代码覆盖率信息,保存到 .coverage 文件中 coverage run test_get_level.py# 2、生成覆盖率统计结果报告 coverage html -d coverage_result
然后,使用 coverage html -d 命令在同级目录下生成代码覆盖率统计报告
用浏览器打开统计报告文件夹中的 index.html 文件, 其中:
statements :代码总行数,不包含空行和注释行
missing :未执行的代码行数
coverage :代码覆盖率
点击 test_get_level.py 文件,可以非常直观地查看到,哪些代码执行了,哪些代码没有被执行
2、C overage API
使用 Coverage API 生成代码覆盖率统计报告更方便
只需要使用查找测试套件并运行,然后使用 Coverage API 进行分析、保存、展示即可
# 使用 API 生成代码覆盖率统计报告
# exec_api.pyimport coverage
import unittest# 实例化一个对象
cov = coverage.coverage()
cov.start()# 测试套件
suite = unittest.defaultTestLoader.discover("./", "test_get_level.py")
unittest.TextTestRunner().run(suite)# 结束分析
cov.stop()# 结果保存
cov.save()# 命令行模式展示结果
cov.report()# 生成HTML覆盖率报告
cov.html_report(directory='result_html')
加python学习qq群:775690737 送python零基础入门学习资料+99个源码
4. 最后
上面只是通过一个简单的 Python 方法结合 unittest 单元测试框架,展示了 Coverage 获取代码覆盖率统计报告的方法
实际项目中, 更多应用场景是: Python 自动化 、 Django / Flask Web 项目统计单元测试用例的代码覆盖率,以提升产品的质量
我已经将文中全部源码上传到
加python学习qq群:775690737 送python零基础入门学习资料+99个源码
聊聊 Python 代码覆盖率工具 - 大咖爱爬虫相关推荐
- python代码覆盖率工具_Python代码覆盖率分析工具Coverage
简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...
- python代码覆盖率工具——coverage
今天发现了一个好用的python代码覆盖率检查工具:coverage, 可以高亮显示代码中哪些语句未被执行,哪些执行了,方便单测. 环境: Linux x86_64 (不能连外网) 下载: 上 htt ...
- Django大咖之路: 如何对付学习Django过程中所遇到的挫败感?
Django作为一个成熟的网站和网络应用开发框架,有着大而全的模块和功能.对于刚从事网站开发或刚熟悉Python语言的新手而言,觉得学习Django好难是一件非常普遍的事情.小编我就以亲身经历告诉你如 ...
- 大咖发声 | 聊聊火爆前端圈的“犀牛书”
今年是牛年,大家期盼已久的"犀牛书"<JavaScript权威指南>第7版的中文版也终于在牛年摆上书架,我觉得这可能就是所谓的冥冥中自有安排吧.众所周知,计算机类的技术 ...
- 与python相关的爬虫工具_python小课堂|爬虫工程师必备的10个python爬虫工具!
[摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...
- 技术大咖齐聚爱数智慧人机交互技术论坛 | CNCC2021
CNCC2021[人机交互技术的机遇与挑战]技术论坛将于2021年10月28日13:00-16:00在深圳国际会展中心CC105B召开,本次论坛由CCF主办,爱数智慧创始人兼CEO张晴晴担任论坛主席, ...
- 如何自学Python?这本技术大咖推荐Python书籍,就是你的第一选择
在人工智能的风口,Python越来越火,同时学习Python的小伙伴也越来越多,今天为你们推荐一本Python自学必备的书籍--<流畅地Python>. 为什么推荐这本书呢? 一.口碑优秀 ...
- python代码覆盖率测试_利用coverage工具进行Python代码覆盖率测试
Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率情况. Coverage安装 1.安装命令:pip install coverage 2.查看cov ...
- 大咖齐聚!好好聊聊啥是AI大模型
随着人工智能步入工业大生产阶段,AI大模型正在加速走出实验室,在全球范围内逐步实现产业落地应用的突破.自2020年至今,越来越多的科技巨头和科研机构参与其中.去年12月,百度发布了全球首个知识增强千亿 ...
最新文章
- c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法
- python模块离线安装_离线安装db2的python模块ibm_db
- [css] 你有使用过css的属性background-blend-mode吗?说说它的运用场景有哪些?
- oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接
- hdu 4296 Buildings (贪心)
- HoloLens开发手记 - Unity之语音输入
- QT资源库中图片的调用
- 阿里月饼事件,猿方怎么看?
- 无穷小、梯度向量和泰勒展开
- initializing of server in progress as process 4656
- 投资理财-合理配置资产结构
- 轻量级过程改进之项目计划
- 使用 java.lang.Math 类完成编程
- easypoi导入excel实践方法:
- 航天信息C48服务器,CSPICE航天信息系统的解析与使用--详细介绍
- 灵机一栋团队小黄衫展示
- 什么是openshift
- 中国砖瓦市场竞争格局与销售策略分析报告2022-2028年版
- .NET3.5 GDI+ 图形操作1
- linux基础测试题
热门文章
- 概率的性质——连续性
- STM32cubeIDE生成HEX文件
- 微信内域名被多人投诉导致无法访问怎么办?
- 遗传算法优化LSTM网络结构(实现自动根据适应度函数:即准确率来全局搜索最佳网络结构):主要被优化参数:网络层数,每层的神经元个数,全连接的层数,全连接层的神经元个数。代码有详细注解
- 链改重塑信任,打造零风险的产业生态体系!
- Tracup|拒绝低效办公,8个Tips让你芜湖起飞,工作效率MAX
- wlop一张多少钱_为什么都说wlop的画很烂?
- 服装店管理软件排名,让你选对是关键
- Android密码管理器app
- 计算机毕业设计之java+ssm基于个人需求的外卖订餐推荐系统