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 中文 ...
随机推荐
- nginx之日志切割
方便查看nginx日志, 平常会将nginx日志进行每日切割处理. 这里介绍 平常比较常用的两种方式 1. logrotate 在linux上logrotate是一个日志文件管理工具.用于分割日志文件 ...
- xlsx.js 表格的导出与导入
1.xlsx简介 通俗的说,xlsx这个插件可以把html中的table元素或者json数据转换成表格后进行导出 <script src="https://cdn.bootcdn.ne ...
- Teable 团队 Sealos 最佳实践,创业公司的完美选择
大家好,我是开源多维表格项目 Teable 的创始人陈加贝. 作为飞书多维表格的最早期负责人,我参与并见证了这个产品从 0 到 1 的全过程.这段经历也让我深入理解了企业在数据协作方面的真实需求. 以 ...
- Qt 子窗口 隐藏标题栏的图标,在任务栏上的不显示
Qt子窗口使用Qt::Dialog样式时,隐藏窗口标题栏图标方法: this->setWindowIcon(QIcon()); Qt子窗口,在任务栏上的不显示,最简单的方法是设置Qt::Tool ...
- Flutter Package: flutter_animate
Flutter package: flutter_animate A performant library that makes it simple to add almost any kind of ...
- NATS: Aspire.NATS.Net 库
NuGet Aspire.NATS.Net 快速入门 首先,你需要已经配置了 NATS 服务器,并且知道访问这个服务器的 URL 地址. 安装 NuGet 使用你熟悉的方式安装 NuGet 库 dot ...
- PDF 图书
我找到的深入介绍 PDF 结构的图书主要有 2 本: PDF Explained,这本书比较早,首发于 2011 年11 月 30 日 Developing with PDF,首发于 2013年10月 ...
- 在centos上部署docker与wordpress
简介 有一个wordpress服务器需要迁移了,之前都是别人维护的,现在需要迁移到自己维护,给的系统是linux centos 8.4.迁移包括mysql,php,phpmyadmin,wordpre ...
- 【JavaWeb】前后端分离SpringBoot项目快速排错指南
1 发起业务请求 打开浏览器开发者工具,同时显示网络(Internet)和控制台(console) 接着,清空控制台和网络的内容,如下图 然后,点击你的业务按钮,发起请求. 首先看控制台有没有报错信息 ...
- TypeNameExtractor could not be found
TypeNameExtractor could not be foundException 一.注意: 如果项目中使用了 knif4j或swagger (knif4j内核中就使用了swagger) 项 ...