简介:覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。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的使用介绍完毕。

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

Python:代码覆盖率工具coverage相关推荐

  1. python代码覆盖率工具——coverage

    今天发现了一个好用的python代码覆盖率检查工具:coverage, 可以高亮显示代码中哪些语句未被执行,哪些执行了,方便单测. 环境: Linux x86_64 (不能连外网) 下载: 上 htt ...

  2. python代码覆盖率工具_Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...

  3. 聊聊 Python 代码覆盖率工具 - 大咖爱爬虫

    1. 代码覆盖率 单元测试代码覆盖率作为一种度量方式,可以计算单元测试用例对于被测代码的覆盖程度,即:被执行的代码数量和代码总数量的比值 统计代码覆盖率 ,经常在单元测试后再进行,可以为测试结果提供评 ...

  4. PYTHON代码审查工具

    这两天看了python相关代码的审查.覆盖等工具,先记录下来,后边再总结其用法. 1. python的review工具 1.1 Review board Review board 是一个 基于web ...

  5. python代码覆盖率测试_利用coverage工具进行Python代码覆盖率测试

    Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率情况. Coverage安装 1.安装命令:pip install coverage 2.查看cov ...

  6. python代码覆盖率测试_Python代码覆盖率分析工具----Coverage

    本文来自Tynam Yang投稿 简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套 ...

  7. Python 代码覆盖率统计工具 coverage.py

    Python 代码覆盖率统计工具 coverage.py coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中 ...

  8. Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量代码质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具有很多,Coverage就是其中一个.代码覆盖率是由特定的测试套件覆盖被侧源代码的 ...

  9. 学习笔记: 代码覆盖率-code coverage

    由于<Pycharm学习笔记01:PyCharm介绍>提出此名词,比较陌生. Code coverage is a metric that can help you understand ...

最新文章

  1. 蓝桥杯 扑克序列(全排列)
  2. 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
  3. C#操作注册表全攻略
  4. 在一行上添加一个简单的if-then-else语句[重复]
  5. c语言影碟出租程序设计总结,vc++影碟出租系统的设计与开发
  6. Packagist发布个人的Composer包
  7. python类class基础
  8. 优秀HTML5网站学习范例:从“饥饿游戏浏览器”谈用户体验
  9. swiftui_SwiftUI的混合包
  10. Linux 输入输出重定向 2>/dev/null和>/dev/null 2>1和2>1>/dev/nul
  11. android webview 长按复制,Android webview 点击或长按有蒙层 – 热爱改变生活
  12. oracle中的case when then else end 用法
  13. 太原理工大学这两年程序设计等竞赛奖牌统计
  14. phpcms文章点击量统计方法
  15. 大数据第一季--Hadoop(day1)-徐培成-专题视频课程
  16. javaCRC8计算的坑
  17. qt之QTcpSocket
  18. DirectX12(D3D12)基础教程(十九)—— 多实例渲染
  19. 快速查询每个快递单号物流详情,支持国内常用的快递公司
  20. SwiftUI 问答之更改 TabView 选项卡时如何运行函数

热门文章

  1. 前端面试题:如何画一条0.5px的线
  2. Android 蓝牙 Bluetooth 自动回连 取消pin码校验弹出框
  3. LaTeX学习---字体设置
  4. 拿到一份代码如何跑起来
  5. python使用you-get下载视频
  6. 2018-2-13-win10-uwp-smms图床
  7. [车联网安全自学篇] ATTACK安全之交互式/非交互式Shell和登录式/非登录式Shell的检测
  8. H5+CSS+JS Tab导航栏自动切换
  9. GILT市场方兴未艾
  10. has been injected into other beans[XXXXXXXXXX] in its raw version as part of a circular reference