首页 > 编程知识 正文

c语言单元测试答案,代码覆盖率怎么测试

时间:2023-05-06 13:18:48 阅读:107419 作者:2994

**

使用coverage工具测试python单元的覆盖率**

Coverage概述

Coverage是用于统计Python码覆盖率的工具,能够检测测试码如何对被测试码显示覆盖率。 Coverage支持分支机构覆盖率统计,并可以生成HTML/XML报告。

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

获取来源: http://pypi.python.org/pypi/coverage

也可以在easy_install或pip中安装easy_install coverage。

安装后,如果在Python27Scripts文件夹下生成coverage.exe等工具并将环境变量C:Python27Scripts添加到path中,请在命令行中使用coverage命令

使用颜色

1 .命令行方式

详情请参阅http://coverage.readthedocs.io/en/latest/cmd.html

可以使用help命令显示帮助。 $ coverage help

重要的命令如下。

A.run

执行代码复盖率统计时,只需在coverage的run参数中执行统计代码即可。

$ coverage run test.py arg1 arg2

test.py是测试脚本,而arg1 arg2是运行test.py所需的参数。 跑完后,会自动创建覆盖率统计结果文件(data file ): coverage。

B.report

如果有覆盖率统计结果文件,只需重新运行report参数,就可以通过命令查看统计结果。

clip_image001

Stmts/Miss表示语句总数/未执行的语句数

cover=(stmts-miss )/Stmts

c. html

生成html的测试报告。

$ coverage html -d covhtml

生成的报告与代码直接关联,突出显示覆盖和未覆盖的代码,并支持排序。 指定html文件夹。 请用这个地址预览一下。 http://nedbatchelder.com/code/coverage/sample _ html /

效果如下。

测试文件:

高亮显示覆盖和未覆盖的代码,覆盖的代码显示为绿色,未覆盖的代码显示为红色。

注:使用coverage run test.py命令运行的文件将聚合项目中包括测试文件本身在内的所有文件。 run参数的子参数—source可以指定要聚集的文件。 $ coverage run-- source=totest.py test.py只能聚集toteragerun

d.combine

您可以合并多个目标百分比数据文件,将需要合并的目标百分比结果数据文件放在同一个目录中,然后运行coverage combine。 但是,对目录中结果文件名的格式有要求,合并的文件必须具有相同的前缀、名称(通常为计算机名称)和数字(通常为进程ID )。 例如, coverage.75 FEC 5d 4b 3a daaa.14632.213308

为便于合并结果,如果您之前运行统计信息,并在run参数后加上-p参数,则会自动生成满足合并条件的结果文件。

e.run参数的子参数1 :branch统计分支覆盖率

如果代码中的分支可以跳转到多行,coverage.py会跟踪每个分支是否有目标。

$ coverage run --branch test.py

clip_image006

Branch/BrPart表示分支数/未执行的分支数

f.run参数的子参数2:并行模式

$ coverage run---- parallel-mode test.py

让Coverage监测被测代码的子进程覆盖率,如果被测代码为多进程,如部分web程序等,必须使用此参数。

2.API方式

除了使用命令行外,还可以在python代码中直接调用coverage模块来执行代码覆盖率统计。 使用方法也很简单:

导入覆盖

cov=coverage.coverage (source=[‘totest’] )

cov.start () )。

#代码

cov.stop () )

cov.report () )

cov.html _ report (directory=‘cov html’) )

source指定要执行统计的文件,source=[‘totest’]只统计totest.py的覆盖率

目录指定生成html的路径

使用Coverage统计web程序覆盖率

web程序通常在启动服务后循环接收消息,不会自动退出。 Coverage在实现中使用atexit模块注册回调函数,并在退出Python时将内存覆盖率结果写入文件。 测试的脚本必须正常结束,或者以SIGINT 2信号结束,才能从atexit出发,得不到覆盖率的结果。 因为CTRL C发送的是SIGINT 2信号,所以前台启动的服务可以在CTRL C停止后再输出结果。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。