2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 聊聊 Python 代码覆盖率工具 - Coverage

聊聊 Python 代码覆盖率工具 - Coverage

时间:2021-09-04 15:23:10

相关推荐

聊聊 Python 代码覆盖率工具 - Coverage

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨星安果

来源丨AirPython

1. 代码覆盖率

单元测试代码覆盖率作为一种度量方式,可以计算单元测试用例对于被测代码的覆盖程度,即:被执行的代码数量和代码总数量的比值

统计代码覆盖率,经常在单元测试后再进行,可以为测试结果提供评判依据

Python 项目最常使用的代码覆盖率统计工具就是:Coverage

2. Coverage

Coverage是用于统计 Python 代码覆盖率的工具,不仅支持分支覆盖率统计,生成 HTML 格式的统计报告,而且可以集成到 Jenkins 中使用

安装 Coverage依赖同样是使用 pip 安装

#安装Coverage依赖pip3installcoverage

Coverage 官方提供了 2 种方式,用于统计代码覆盖率,分别是:

1、Coverage 命令行

2、Coverage API

更详细的介绍可以参考官方文档:

https://coverage.readthedocs.io/en/latest/

3. 实战一下首先,用 Python 编写一段简单被测代码,如下:

#被测代码#main.pydefget_level(cource):"""自定义的方法:paramcource:成绩:return:"""ifcource>=90:return"优秀"elifcource>=80:return"良好"elifcource>=60:return"合格"elifcource>=40:return"不合格"else:return"差"

然后,编写单元测试用例根据上面的被测方法,这里使用 Python 自带的unittest依赖库来编写 2 个简单的测试用例并且,特意只覆盖到了上面方法的 2 个分支,即:优秀和良好

#单元测试#test_get_level.pyimportunittestfrommainimport*classGetLevel(unittest.TestCase):deftest_get_level1(self):self.assertEquals(get_level(90),"优秀")deftest_get_level2(self):self.assertEquals(get_level(80),"良好")if__name__=="__main__":unittest.main(verbosity=2)

右键运行单元测试,会发现两个测试用例都是通过的接下来,分别使用Coverage命令和 API 在本地生成代码覆盖率统计报告1、Coverage命令在项目根目录下,运行 coverage run命令,生成 .coverage 文件,搜集被测试源代码覆盖率的信息

#1、搜集被测代码覆盖率信息,保存到.coverage文件中coverageruntest_get_level.py#2、生成覆盖率统计结果报告coveragehtml-dcoverage_result

然后,使用coverage html -d 命令在同级目录下生成代码覆盖率统计报告

用浏览器打开统计报告文件夹中的 index.html 文件,其中:statements:代码总行数,不包含空行和注释行missing:未执行的代码行数coverage:代码覆盖率

点击 test_get_level.py 文件,可以非常直观地查看到,哪些代码执行了,哪些代码没有被执行

2、Coverage API使用Coverage API生成代码覆盖率统计报告更方便只需要使用查找测试套件并运行,然后使用 Coverage API 进行分析、保存、展示即可

#使用API生成代码覆盖率统计报告#exec_api.pyimportcoverageimportunittest#实例化一个对象cov=coverage.coverage()cov.start()#测试套件suite=unittest.defaultTestLoader.discover("./","test_get_level.py")unittest.TextTestRunner().run(suite)#结束分析cov.stop()#结果保存cov.save()#命令行模式展示结果cov.report()#生成HTML覆盖率报告cov.html_report(directory="result_html")

4. 最后

上面只是通过一个简单的 Python 方法结合 unittest 单元测试框架,展示了 Coverage获取代码覆盖率统计报告的方法

实际项目中,更多应用场景是:Python自动化、Django/Flask Web项目统计单元测试用例的代码覆盖率,以提升产品的质量

程序员专栏扫码关注填加客服长按识别下方二维码进群

近期精彩内容推荐:

牛逼!北京后厂村惊现互联网工厂,007. ICU

从月薪2300女工到年薪80万谷歌工程师的女孩

8个流行的Python可视化工具包

分布式锁(数据库、Redis、ZK)拍了拍你

在看点这里

好文分享给更多人↓↓

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。