python代码覆盖率测试_Python单元测试框架覆盖率-Coverage

原标题:Python单元测试框架覆盖率-Coverage

首先来看看什么是单元测试覆盖率:

覆盖率是用来衡量单元测试对功能代码的测试情况,通过统计单元测试中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。

代码覆盖率 = 代码的覆盖程度,一种度量方式。

它的度量方式包括但是不仅限于以下几种:

语句覆盖(度量被测代码中每个可执行语句是否被执行到了)

判定覆盖(又称分支覆盖,度量程序中每一个判定的分支是否都被测试到了)

条件覆盖(度量判定中的每个子表达式结果true和false是否被测试到了)

路径覆盖(度量了是否函数的每一个分支都被执行了)

组合覆盖等

那么对于Python项目又如果对它的单元测试覆盖率进行分析呢?

当然同Java的JaCoCo、Cobertura等一样,Python也有自己的单元测试覆盖率统计工具,Coverage就是其中一种。

dae0fad79b214a7b9c20e6f53f7a0233.jpeg

Coverage介绍与安装

Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率如何。可以高亮显示代码中哪些语句未被执行,哪些执行了,方便单测。并且,coverage支持分支覆盖率统计,可以生成HTML/XML报告。

官方文档:http://coverage.readthedocs.org/en/latest/

获取地址:http://pypi.python.org/pypi/coverage

Coverage安装:

pip install coverage

使用帮助:

使用help命令查看帮助:$ coverage help

Coverage使用

对于Coverage的使用,比较简单,直接coverage run命令去执行已经写好的单元测试用例就可以了。

执行单元测试:

coverage run test.py arg1 arg2

这里test.py是已经完成的测试用例脚本,arg1 arg2是test.py执行需要的参数。

执行结束后,会自动生成一个覆盖率统计结果文件(data file):.coverage。当然这个文件里面一大堆数字是不方便我们查看的。

所以我们使用另外一条命令查看覆盖统计结果:coverage report。

7e9f30f696b948a680f7f08caab60b3a.jpeg

这里

Stmts:表示语句总数

Miss:未执行到的语句数

Cover=(Stmts-Miss)/Stmts

当然也可以生成更加清理明了的html测试报告:

coverage html -d report

这里-d指定html文件夹。

生成的报告直接关联代码,高亮显示覆盖和未覆盖的代码,支持排序。-d指定html文件夹。

8bbc874b08e84a6c95f13ccbff68d9b6.jpeg

通过点击其中的各个py文件可以看到各自的代码被执行情况

f7353d0568e94a61b7bfe5d65417667e.jpeg

当然还可以通过API方式执行测试并统计覆盖率:

cov = coverage.coverage(source=["course_search"])

cov.start()

suite = unittest.defaultTestLoader.discover(os.getcwd(), "test_course_search.py")

unittest.TextTestRunner().run(suite)

cov.stop()

cov.report()

cov.html_report(directory="report_html_01")

结果显示:

596ed2897f2e4f93ae0241bbd148bc85.jpeg

来源网络,侵权联系删除返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值