Python:代码覆盖率工具coverage

这篇具有很好参考价值的文章主要介绍了Python:代码覆盖率工具coverage。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:覆盖率测量通常用于衡量测试的有效性。它可以显示您的代码的哪些部分正在被测试执行,哪些不是。coverage是一个测量 Python 程序代码覆盖率的工具。它监视您的程序,注意代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。

安装:

pip install coverage

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

官方提供2种统计结果方式:

1、Coverage 命令行

2、Coverage API 

快速使用:单元测试运行命令以“python”开头,只需将初始“python”替换为“coverage run”即可。

unittest范例:被测代码demo.py

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

单元测试源码:test_demo.py

import unittest
from 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)


if __name__ == '__main__':
    unittest.main(verbosity=2)

运行单元测试:python test_demo.py

Python:代码覆盖率工具coverage

运行代码覆盖率工具coverage:coverage run test_demo.py

Python:代码覆盖率工具coverage

生成简易版覆盖结果:coverage report

Python:代码覆盖率工具coverage

生成覆盖率统计详细结果报告:coverage html -d my_coverage_result

其中my_coverage_result 是自定义生成的报告的目录名称。

Python:代码覆盖率工具coverage

打开目录内index.html,点击被测的目标demo.py

Python:代码覆盖率工具coverage

参数说明:

statements:代码总行数,不包含空行和注释行
missing:未执行的代码行数
coverage:代码覆盖率

将会清晰的看到单元测试代码覆盖的情况。
其中:总行数为12行,已测试行数10行,所以覆盖率为:
10 / 12 = 0.83 即:代码覆盖率为83%

Python:代码覆盖率工具coverage

点击界面红色 2 missing 还能看到专门标出了未测的代码地方。

Python:代码覆盖率工具coverage

coverage.py 的API 位于一个名为coverage. 大多数接口都在coverage.Coverage类中。Coverage 对象上的方法大致对应于命令行界面中可用的操作

范例:

import coverage
import unittest

# 实例化一个对象
cov = coverage.coverage()
cov.start()

# 测试套件
suite = unittest.defaultTestLoader.discover("./", "test_demo.py")
unittest.TextTestRunner().run(suite)


# 结束分析
cov.stop()

# 结果保存
cov.save()

# 命令行模式展示结果
cov.report()

# 生成HTML覆盖率报告
cov.html_report(directory='result_html')

执行结果:

Python:代码覆盖率工具coverage

同样会生成result_html的自定义目录报告,打开index.html,均可点击对应文件查看代码覆盖的情况。

Python:代码覆盖率工具coverage

查看demo.py的覆盖情况:

Python:代码覆盖率工具coverage

pytest范例:被测代码demo.py

建议安装插件:pytest-cov

安装pytest-cov:

pip install pytest-cov

用法1:pytest --cov

Python:代码覆盖率工具coverage

Python:代码覆盖率工具coverage

用法2:pytest --cov=src src即目标内全部文件的代码

例如src目录下有3个文件:a.py、b.py、c.py

Python:代码覆盖率工具coverage

执行结果:

Python:代码覆盖率工具coverage

Python:代码覆盖率工具coverage

生成报告:pytest --cov=src --cov-report=html

Python:代码覆盖率工具coverage

查看报告:

Python:代码覆盖率工具coverage

自此,代码覆盖率工具coverage命令行模式,API模式,以及在unittest和pytest的使用介绍完毕。

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

文章来源地址https://www.toymoban.com/news/detail-491180.html

到了这里,关于Python:代码覆盖率工具coverage的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • sonar覆盖率、代码覆盖率、分支覆盖率的计算方式

    代码质量的覆盖率分为三种,覆盖率、代码覆盖率、分支覆盖率,那每一种的计算方式是怎么样的呢? 举例: 上面最有疑惑的是覆盖率,不知道怎么算出了来的,后面再说。 通过sonarqube可以分析出: 指标 值 可覆盖行(lines_to_cover) 13242 未覆盖的代码(uncovered_lines) 7943 可

    2024年02月06日
    浏览(37)
  • 代码覆盖率

    在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论

    2024年02月07日
    浏览(31)
  • Google代码覆盖率最佳实践

    软件质量保障: 所寫即所思|一个阿里质量人对测试的所感所悟。 谷歌一直倡导的领域之一是使用代码覆盖率数据评估风险并识别测试中的真空。然而,代码覆盖率的价值一直是个争议的话题。每次聊到代码覆盖率时,似乎都会引发无尽的争论。由于大家固守自己阵营,所以

    2024年01月16日
    浏览(50)
  • 单元测试——测试代码功能及代码覆盖率

    目录 目录 前言 一、单元测试是什么? 二、前置准备  三、测试代码  四、示例  五:单元测试覆盖率 单元测试的写法不固定,这里以我自己的一种写法为例,算是很简单的一种写法           单元测试其实就是写一些测试函数,测试代码的功能是否正常运行,一般如果

    2024年02月07日
    浏览(37)
  • Lombok导致代码单元测试覆盖率崩塌

    Lombok 由于其使用的便利性, 目前流传非常广泛。甚至有呼声希望其能被Java官方引入,成为JDK的一部分。 当然凡事都有两面性,Lombok的引入也是有代价的。一时注释一时爽,结果导致代码在不知不觉中翻了好几倍。 例如以下几个简单的注解,背后是N多个自动生成的方法: @Da

    2024年02月07日
    浏览(41)
  • 如何有效保证Java代码单元测试覆盖率

    我们在实际项目开发过程中,不同level的童鞋由于专业技能的层次不同,导致在参与实际开发的业务代码中经常会出现各种bug,项目管理中好的pm或许会给充足的时间来让开发童鞋们定位修复这些bug,也有各种客观原因的PM不会在项目中预留这些时间,往往就需要开发自己通过

    2023年04月17日
    浏览(46)
  • go/java/C++覆盖率工具原理汇总学习记录

    goc采用的是插桩源码的形式,而不是待二进制执行时再去设置breakpoints。这就导致了当前go的测试覆盖率收集技术,一定是侵入式的,会修改目标程序源码。直接看案例 运行命令 生成的代码如下 jacoco是一个开源的代码覆盖率工具,针对java语言,其使用方法很灵活,可以嵌入

    2023年04月24日
    浏览(50)
  • OpenHarmony本地代码和接口覆盖率可视化操作梳理

    目录 一. 修改gn文件,编译执行测试套 1. 修改业务侧BUILD.gn文件,增加编译选项 2.设置lcov统计“branch coverage”的方法 3. 编译测试版本+目标用例 4. 在windows下搭建执行环境,执行测试用例 5. 查看测试生成gcda文件 二. 使用本地代码覆盖率脚本 7. 修改python脚本中的路径 8. 执行脚

    2023年04月26日
    浏览(34)
  • 16 RTL仿真工具介绍—Modelsim脚本操作(Modelsim仿真 覆盖率测试)

    深入还是得靠自己学——尤其是脚本代码的编写 目录 1.Flist常用写法 2.Debussy——检查语法错误+debug代码 2.Linux版的Debussy——verdi 3.Modelsim——do file脚本 4.按脚本方式操作Modelsim 1.首先更改工作目录,到Modelsim文件夹下 2.写脚本代码 3.执行脚本、仿真 4.加载波形、界面操作、保存

    2024年02月08日
    浏览(54)
  • 单元测试必备:Asp.Net Core代码覆盖率实战,打造可靠应用 !

    在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下 代码覆盖率 ,代码覆盖率是单元测试运行的 度量值 ,覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用例的质量和代码的健壮性。常见的覆盖率包括语句覆盖

    2024年04月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包