Python代码覆盖率工具之Coverage
Python代码覆盖率工具之Coverage
在软件开发过程中,确保代码覆盖率是质量控制的关键一环。通过测量代码覆盖率,开发者可以了解哪些部分的代码正在被测试执行,哪些部分尚未被覆盖,从而优化测试策略,提高代码质量。在Python中,Coverage是一个非常流行且功能强大的代码覆盖率工具。本文将详细介绍如何使用Coverage工具来测量Python程序的代码覆盖率。
一、安装Coverage工具
使用Coverage工具之前,首先需要安装它。可以通过Python的包管理工具pip来进行安装:
pip install coverage
安装完成后,可以通过命令coverage --version来检查是否安装成功。
二、使用Coverage工具
Coverage工具提供了两种主要的使用方式:命令行方式和API方式。
1. 命令行方式
假设我们有一个简单的Python程序main.py,内容如下:
def print_hi(name):
if "cnblogs" in name:
print(f'Hi, 博客园')
elif "test-gang" in name:
print(f'Hi, 小罡测试笔记')
else:
print(f'Hi, python')
if __name__ == '__main__':
print_hi('test-gang')
我们可以使用以下步骤来测量这个程序的代码覆盖率:
- 执行覆盖率测试:
coverage run main.py
这条命令会运行main.py,同时记录哪些代码被执行了。
- 生成覆盖率报告:
coverage report
这条命令会在控制台输出一个简单的覆盖率报告,显示哪些代码被执行了,哪些没有。
- 生成HTML格式的覆盖率报告:
coverage html
这条命令会生成一个HTML格式的覆盖率报告,打开生成的htmlcov/index.html文件,可以直观地查看代码的覆盖率情况。
命令概览
您可以通过执行coverage help命令来查阅coverage工具所提供的各项命令:
用法: coverage <command> [options] [args]
命令列表:
annotate 为源文件添加执行信息注释。
combine 将多个数据文件进行合并。
debug 展示coverage.py的内部调试信息。
erase 清除之前收集的覆盖率数据。
help 获取关于如何使用coverage.py的帮助信息。
html 生成HTML格式的覆盖率报告。
json 生成JSON格式的覆盖率报告。
lcov 生成LCOV格式的覆盖率报告。
report 报告各个模块的覆盖率统计数据。
run 运行Python程序并测量其代码执行情况。
xml 生成XML格式的覆盖率报告。
如需进一步了解各个coverage命令的详细参数,可以分别执行coverage <command> --help命令,例如:coverage combine --help
用法: coverage combine [options] <path1> <path2> ... <pathN>
此命令用于合并来自多个覆盖率数据文件的数据。合并后的结果将保存到一个单独的文件中,该文件代表所有输入数据的并集。位置参数可以是指向数据文件或包含数据文件的目录的路径。如果未提供路径,则默认合并当前目录下名为默认数据文件的数据。
选项:
-a, --append 将覆盖率数据追加到现有的.coverage文件中,而不是每次运行都清空该文件。
--data-file=DATAFILE 指定要操作的数据文件的基本名称,默认为“.coverage”。[环境变量: COVERAGE_FILE]
--keep 保留原始数据文件,而不是在合并后删除它们。
-q, --quiet 静默模式,不打印任何执行过程中的消息。
--debug=OPTS 设置调试选项,多个选项之间用逗号分隔。[环境变量: COVERAGE_DEBUG]
-h, --help 显示此命令的帮助信息。
--rcfile=RCFILE 指定配置文件的路径。默认情况下,将尝试使用“.coveragerc”、“setup.cfg”、“tox.ini”和“pyproject.toml”。[环境变量: COVERAGE_RCFILE]
2. API方式
除了命令行方式,Coverage还提供了API方式,可以在Python代码中直接使用Coverage类来测量覆盖率。以下是一个简单的示例:
import coverage
def print_hi(name):
if "cnblogs" in name:
print(f'Hi, 博客园')
elif "test-gang" in name:
print(f'Hi, 小罡测试笔记')
else:
print(f'Hi, python')
if __name__ == '__main__':
cov = coverage.Coverage() # 创建Coverage对象
cov.start() # 开始测量
print_hi('test-gang') # 需要测量的代码块
cov.stop() # 结束测量
cov.save() # 保存结果
cov.report() # 生成控制台报告
cov.html_report() # 生成HTML报告
Python代码覆盖率工具之Coverage的更多相关文章
- coverage python 代码覆盖率工具使用(django 使用)
1. 安装包 pip install coverage 2.启动程序 coverage run -m pytest 3.获取html格式的报告文件 coverage html 4.创建配置文件 .co ...
- Python 代码覆盖率统计工具 coverage.py
coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...
- 利用coverage工具进行Python代码覆盖率测试
Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率情况. Coverage安装 1.安装命令:pip install coverage 2.查看cov ...
- Python代码覆盖率分析工具Coverage
简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...
- python代码覆盖率coverage简介与用法
如果衡量单元测试对相应代码的测试重量,覆盖率是一个必要非充分条件,因此统计代码的覆盖率,检视单测是否充分,就尤为的重要.这里针对python-unittest的单测的覆盖率coverage进行使用说明 ...
- python代码覆盖率统计-coverage
coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...
- C++代码覆盖率工具Coverage Validator
市面上的C++代码覆盖率工具大都收费,Coverage Validator也不例外.Coverage Validator应该少有人听过,我也是在stackoverflow里听别人介绍的.所以下载了试用 ...
- JAVA代码覆盖率工具JaCoCo-原理篇
JAVA代码覆盖率工具JaCoCo-原理篇 1.2 JAVA覆盖率工具介绍 1.3.3 Apache Maven方式 1.3.4 Eclipse EclDmma Plugin方式 JAVA代码覆盖率工 ...
- 【Machine Learning】Python开发工具:Anaconda+Sublime
Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...
- Python开发工具PyCharm个性化设置(图解)
Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...
随机推荐
- k8s之常见问题汇总
1.服务器中的k8s已经被移除,但是磁盘依然有占用, 于是将其卸载并删除操作 [root@k8s-node2 k8s_node]# rm -rf /var/lib/kubelet rm: cannot ...
- 如何实现LLM的通用function-calling能力?
众所周知,LLM的函数function-calling能力很强悍,解决了大模型与实际业务系统的交互问题.其本质就是函数调用. 从openai官网摘图: 简而言之: LLM起到决策的作用,告知业务系统应 ...
- 德承工控机DX-1200 成功适配2024年6月6日发布的国产开源系统OpenEuler 24.03 LTS
基础软件双子星:欧拉系统(OpenEuler)& 鸿蒙系统(OpenHarmony),鸿蒙系统常应用在华为的手机和平板电脑上,大众也较为熟悉,是面向消费电子产品领域的系统:而欧拉系统则是面向服 ...
- oracle中id自增长(转)
首先,你要有一张表! CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR( ...
- Ant Design Pro项目一初始化就报a标签嵌套a标签错误<a> cannot as a descendant of <a>
前情 公司经常需要做一些后台管理页面,我们选择了Ant Design Pro,它是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案. 坑位 按官方文挡一步步下来,项 ...
- .NET周刊【12月第2期 2024-12-08】
国内文章 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名) https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系 ...
- 渗透测试-前端加密分析之RSA响应加密
本文是高级前端加解密与验签实战的第7篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过请求包和响应包加密来爆破登录界面. 分析 这里的公私钥同上文一样是通过服务端获取 ...
- manim边学边做--移动动画
在Manim中,其实直线移动的动画非常简单,每个Mobject对象都有animate属性, 通过obj.animate.shift()或者obj.animate.move_to()很容易将对象从一个位 ...
- kubernetes上报Pod已用内存不准问题分析
1.问题描述: 经常有业务反馈在使用容器云平台过程中监控展示的业务使用内存不准,分析了下kubernetes采集Pod内存使用的实现原理以及相应的解决思路 2.问题分析: 2.1 问题排查: 监控数据 ...
- Qt开发经验小技巧171-175
在Qt编程中经常会遇到编码的问题,由于跨平台的考虑兼容各种系统,而windows系统默认是gbk或者gb2312编码,当然后期可能msvc编译器都支持utf8编码,所以在部分程序中传入中文目录文件名称 ...