千锋教育-做有情怀、有良心、有品质的职业教育机构

如何分析Python测试代码覆盖率?

来源:千锋教育
发布时间:2023-11-06 17:33:58
分享

在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。

Coverage不仅支持分支覆盖率统计,还可以生成HTML/XML报告。并且XML报告可以结合Jenkins和Sonar集成工具一起使用。

安装

Coverage作为Python的一个第三方库,使用时需要先安装,使用pip命令进行安装。安装命令:pipinstallcoverage

C:\\Users\\TynamYang>pipinstallcoverage

Collectingcoverage

Downloadingcoverage\-5.1-cp37-cp37m-win32.whl\(204kB\)||204kB731kB/s

Installingcollectedpackages:coverage

Successfullyinstalledcoverage\-5.1C:\\Users\\TynamYang\>

安装完成后可以看到安装的版本:coverage-5.1安装完成后使用coverage,coverage有两种使用方法,一种是在命令行中使用,一种是调用API使用。方便控制部分需要测试的代码。

命令行中使用

1、基本参数

命令行中使用时常用参数:

·run–运行Python程序并收集执行数据

·report–报告覆盖率结果

·html–生成HTML文件,内容含覆盖率结果列表

·json–生成JSON文件,内容含覆盖率结果

·xml–生成XML报告文件,内容含覆盖率结果

·erase–清除之前收集的覆盖率数据

·combine–合并多个数据文件

·debug–获取调试信息

可以使用help命令查看帮助:coveragehelp

2、运行代码收集信息

在使用coverage时,基本需要两步运行,第一步运行源代码,收集被测试的源代码覆盖率的信息,第二步生成代码覆盖率的信息报告。

如下测试代码:

#test.py

#coding:utf-8

importunittest

defadd_numb(a,b):

returna+b

defdivision_numb(a,b):

returna/b

classTest(unittest.TestCase):

deftest_add_1(self):

self.assertEqual(add_numb(1,1),2)

deftest_add_2(self):

self.assertEqual(add_numb(2,0),1)

deftest_division_1(self):

self.assertEqual(division_numb(2,1),2)

deftest_division_2(self):

self.assertEqual(division_numb(2,0),2)

if__name__=="__main__":

unittest.main(verbosity=2)

使用命令运行:coverageruntest.py

C:\\Users\\TynamYang\\Desktop>coverageruntest.py

test\_add\_1\(\_\_main\_\_.Test\)...ok

test\_add\_2\(\_\_main\_\_.Test\)...FAIL

test\_division\_1\(\_\_main\_\_.Test\)...ok

test\_division\_2\(\_\_main\_\_.Test\)...ERROR\======================================================================ERROR:test\_division\_2\(\_\_main\_\_.Test\)\----------------------------------------------------------------------Traceback\(mostrecentcalllast\):

File"test.py",line22,intest\_division\_2

self.assertEqual\(division\_numb\(2,0\),2\)

File"test.py",line9,indivision\_numbreturna/b

ZeroDivisionError:divisionbyzero\======================================================================FAIL:test\_add\_2\(\_\_main\_\_.Test\)\----------------------------------------------------------------------Traceback\(mostrecentcalllast\):

File"test.py",line16,intest\_add\_2

self.assertEqual\(add\_numb\(2,0\),1\)

AssertionError:2\!=1

----------------------------------------------------------------------Ran4testsin0.003s

FAILED\(failures\=1,errors=1\)

PSC:\\Users\\TynamYang\\Desktop\>

代码执行完成后会生成一个覆盖率统计结果文件:.coverage。该文件名可通过设置COVERAGE_FILE环境变量进行修改。

以上内容为大家介绍了如何分析Python测试代码覆盖率?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • 用Python+OpenCV实现自动扫雷 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一、世界综合排名第二的郭蔚嘉的顶顶大名。扫雷作为一款在Windows9x时代就已经诞生的经
  • python unittest控制用例的执行顺序 为什么要进行顺序控制呢?使用过testng的同学就知道,它相对于junit来说有更强大的功能,其中的一个功能就是依赖测试。什么是依赖测试呢?简单的说一下就是,A方法运行时,其中有个变量的取值是B方法的
  • Python使用装饰器在执行单元测试时配置环境 装饰器的定义是给一个对象动态加载功能,就像打游戏时给队友上buff一样。一直以来,我对装饰器用的不多,经常会用别的方式搞定,虽然代码丑一点,但也能用。这次遇到一个特别适合装饰器的应用场景,就是执行单元
  • Python的Unittest单元测试使用详解 PytheM是一个Python渗透测试框架。它只能在osnGNU/LinuxOS系统上运行。安装$sudoapt-getupdate$sudoapt-getinstalllibasound-devli
  • python丰富的内置类型及相关操作 python的内置类型如下:lString:字符串放在单引号、双引号、三引号(多行时)中,从0开始索引,支持n查:find、index、n切片:s[0:2]、s[1:]n连接:“abc”+“ef”=>
  • python强大的标准库 Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理