在python代码进行单元测试的时候,我们总会遇到这样的问题,如何来统计我们的代码所有分支的测试?本文带你了解,如何快速的掌握代码的覆盖率。
如何 来统计呢,可以用coverage模块来实现,如何用呢,首先来安装。
pip3 install coverage
安装结果
接着呢,我们先准备一个测试类,一个被测的类.
下面是被测类
class Tool():
def sub(self,a,b):
return a,b
def cmopar(self,a,b):
if a>b:
return True
else:
return False
测试类
import unittest
from too import Tool
class MyTestCase(unittest.TestCase):
def test_something(self):
tool=Tool()
self.assertEqual(tool.sub(1,2),3)
def testcomp(self):
comp=Tool()
self.assertTrue(comp.cmopar(2,3))
正常测试,执行
python testtoo.py
结果如下
那么我们看覆盖率,如何来实现呢
coverage run --source . testtoo.py
结果:
可以看到
生产一个文件,我们看结果,可以使用
coverage report
结果如下:
我们可以看到,覆盖率出来了,
如果想看html报告呢
coverage html
结果:
生成了一个html文件夹,打开index.html
结果:
各字段说明:
-
Stmts 总的有效代码行数(不包含空行和注释行)
-
Miss 未执行的代码行数(不包含空行和注释行)
-
Branch 总分支数
-
BrMiss 未执行的分支数
-
Cover 代码覆盖率
-
Missing 未执行的代码部分在源文件中行号
可以看到大概的覆盖率.
结果展示中的字段含义:
-
tmts:语句总数
-
Miss:未执行到的语句数
-
Cover:覆盖率,计算公式 Cover=(Stmts-Miss)/Stmt
另外,命令行还有下面的
命令行中使用时常用参数:
-
run – 运行Python程序并收集执行数据
-
report – 报告覆盖率结果
-
html – 生成HTML文件,内容含覆盖率结果列表
-
json – 生成JSON文件,内容含覆盖率结果
-
xml – 生成XML报告文件,内容含覆盖率结果
-
erase – 清除之前收集的覆盖率数据
-
combine – 合并多个数据文件
-
debug – 获取调试信息
可以使用help命令查看帮助:
coverage help
当然还可以api调用
# 实例化对象
cov = coverage.coverage()
# 开始分析
cov.start()
suite = unittest.defaultTestLoader.discover(os.getcwd(), "testtoo.py")
unittest.TextTestRunner().run(suite)
# 结束分析
cov.stop()
# 结果保存
cov.save()
# 命令行模式展示结果
cov.report()
# 生成HTML覆盖率报告
cov.html_report(directory='covhtml')
一样可以收集到最后的结果,看大家如何去使用即可。
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。