python - coverage

coverage

overage 是一个用于测量Python程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已经执行,然后分析源代码,以确定哪些代码本可以执行,但没有执行。

覆盖率测量通常用于衡量测试的有效性。它可以显示代码的哪些部分正在由测试执行,哪些部分没有。

最新版本是coverage 7.3.2,发布于2023年10月2日。它支持于:

  • Python 版本3.8到3.12。
  • Python 版本3.8到3.10。

参考文章

官网:https://coverage.readthedocs.io/en/latest/config.html
如何使用mock:https://www.ycpai.cn/python/FVxMy9RT.html
Python代码覆盖率分析工具Coverage:https://blog.csdn.net/Free355/article/details/131287280

代码说明

目录结构说明

在这里插入图片描述

业务代码

class CalcDemo:

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def plus(self):
        return self.x + self.y

    def subtract(self):
        return self.x - self.y

    def multiply(self):
        return self.x * self.y

    def divide(self):
        return self.x / self.y

测试代码

import unittest

from src.Demo import CalcDemo


class TestDemo(unittest.TestCase):

    def test_plus(self):

        self.assertEquals(CalcDemo(6, 4).plus(), 10)

    def test_subtract(self):
        self.assertEquals(CalcDemo(6, 4).subtract(), 2)

    def test_multiply(self):
        self.assertEquals(CalcDemo(1, 5).multiply(), 5)

配置文件

[run]
# 是否统计条件语句的分支覆盖情况。if 条件语句中的判断通常有 True 和 False 两种情况,设置 branch = True 后,Coverage 会测量这两种情况是否都被测试到。
branch = True
# 指定需统计的源代码目录,这里设置为当前目录(即项目根目录)。
source = src

[report]
# 在生成的统计报告中显示未被测试覆盖到的代码行号。
show_missing = True

执行生成报告文件

import unittest
import coverage

if __name__ == "__main__":
    # 测试目录
    testPath = ['test', 'test/demo', 'test/system']

    # 实例化对象
    cov = coverage.coverage()
    # 开始分析
    cov.start()
    # 创建用例集
    suite = unittest.TestSuite()
    for path in testPath:
        suite.addTest(unittest.defaultTestLoader.discover(path, "*.py", path))
    unittest.TextTestRunner().run(suite)

    # 结束分析
    cov.stop()
    # 结果保存
    cov.save()
    # 命令行模式展示结果
    cov.report()
    # 生成HTML覆盖率报告
    cov.html_report(directory='ResultHtml')

报告结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值