Python - 测试覆盖率统计

2793 篇文章 4 订阅
2642 篇文章 26 订阅

在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%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值