前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统计代码测试覆盖率-Python

统计代码测试覆盖率-Python

作者头像
louiezhou001
发布2019-07-24 11:38:05
9300
发布2019-07-24 11:38:05
举报

统计代码测试覆盖率-Python

衡量Unit Test(单元测试)是否充分, 覆盖率是一个必要指标, 是检验单元测试的重要依据, 这里针对python unittest 的单元测试覆盖率coverage进行分享.

来自官方的解释:

Coverage.py runs on many versions of Python:

CPython 2.6, 2.7 and 3.3 through alpha 3.8.

PyPy2 6.0 and PyPy3 6.0.

Jython 2.7.1, though not for reporting.

IronPython 2.7.7, though not for reporting.

注: Coverage支持丰富的python版本

  • Install Coverage

pip install coverage

无论是Windows, Linux 还是Mac os,安装都非常方便, 如果提示pip command not found, 请自行百度.

测试代码:

我们现在已经installed coverage, 需要使用它, 让我们来创建一个Module 然后调用mymath.py, 代码如下:

这个module里我们定义了4个方法, 分别是add, subtract, multiply, divide(+,-,*,/)

让我们来测试这模块, 创建test_mymath.py, 在call之前先要import我们的module,下面是我们的测试代码:

  • Use coverage run to run your progame and gather data:

然后我们就可以使用Coverage 进行验证了

coverage run test_mymath.py

执行上面命令:

如果你的Module有参数,你可以使用下面方法

coverage run test.py arg1 arg2

  • Use coverage report to report on the results:
  • For a nice presentation, use coverage html to get annotated HTML lisitings detailing missed lines:

coverage html

使用上述命令会在目录下生成htmlcov文件, 包含了详细的测试报告.

浏览器查看报告详情

从中不难发现, 在test_mymath.py中我们只调用了mymath.py的add 方法, 另外3个方法没有调用,因此代码覆盖率没有达到100%, report中用红色标注提示我们, 而 test_mymath.py 全部代码都被完全Coverage, 覆盖率100%.

这么一个傻瓜式工具使用非常easy, 通过这个实例实战, 让我们比较直观的了解单元测试代码覆盖率的重要性, 平时的工作中可能被各种业务和框架缠绕, 没有把中心放在这上面, 但它却是非常重要的, 用事实和数据说话抵过千言万语.

注: Java也有相应的Coverage工具 jacoco, EMMA等.

参考文献: https://pypi.org/project/coverage/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试工程师成长之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 统计代码测试覆盖率-Python
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档