java单元测试代码覆盖率,好的测试要追求对代码的覆盖率,以下
**
使用coverage工具测试python单元的覆盖率* *
覆盖范围概述
覆盖率是一个统计Python代码覆盖率的工具,它可以检测测试代码如何向被测代码显示覆盖率。覆盖率支持分支覆盖率统计,可以生成HTML/XML报告。
官方文件:http://coverage.readthedocs.org/en/latest/
资料来源:http://pypi.python.org/pypi/coverage
您也可以在easy_install或pip中安装easy _ install服务。
安装后,如果在Python27Scripts文件夹中生成了coverage.exe等工具,并且在路径中添加了环境变量C:Python27Scripts,请在命令行中使用coverage命令。
使用颜色
1.命令行模式
详情见http://coverage.readthedocs.io/en/latest/cmd.html。
您可以使用help命令来显示帮助。$覆盖范围帮助
重要的命令如下。
a .运行
在进行代码覆盖率统计时,只需要在覆盖率的运行参数中进行统计代码即可。
$ coverage运行test.py arg1 arg2
Test.py是测试脚本,arg1 arg2是运行test.py的必需参数.运行之后,覆盖率统计结果文件(数据文件):覆盖率将被自动创建。
报告
如果有覆盖率统计结果文件,只需重新运行报表参数,就可以通过命令查看统计结果。
clip_image001
Stmts/Miss表示语句总数/未执行的语句数。
cover=(stmt-miss)/stmt
c.超文本标记语言
生成html测试报告。
$ coverage html -d covhtml
生成的报告与代码直接相关,突出显示覆盖和未覆盖的代码,并支持排序。指定html文件夹。请用这个地址预览它。http://nedbatchelder.com/code/coverage/sample _ html/
效果如下。
测试文件:
突出显示覆盖和未覆盖的代码。覆盖的代码显示为绿色,未覆盖的代码显示为红色。
注意:使用命令coverage run test.py运行的文件将聚合项目中的所有文件,包括测试文件本身。运行参数的子参数—源可以指定要聚合的文件。$ toteragerun-source=totem . py test . py只能聚合totem。
联合收割机
您可以合并多个目标百分比数据文件,将要合并的目标百分比结果数据文件放在同一个目录中,然后运行覆盖率合并。但是,对目录中结果文件名的格式有要求。合并的文件必须具有相同的前缀、名称(通常是计算机名)和编号(通常是进程ID)。例如,coverage . 75 FEC 5d 4 B3 adaaaa . 58676 . 68668686667
为了方便合并结果,如果在运行参数之前运行统计,在运行参数之后添加-p参数,将自动生成满足合并条件的结果文件。
e.run参数的子参数1:分支统计分支覆盖率
如果代码中的分支可以跳转到多行,coverage.py会跟踪每个分支是否有目标。
$覆盖率运行-分支测试. py
clip_image006
Branch/BrPart表示分支数/未执行的分支数。
f.run参数的子参数2:并行模式
$覆盖率运行-并行模式测试. py
让覆盖率监控被测代码的子过程覆盖率。如果被测试的代码是多进程的,比如一些web程序,就必须使用这个参数。
2.API模式
除了使用命令行,还可以直接调用python代码中的覆盖率模块来进行代码覆盖率统计。使用方法也很简单:
导入覆盖
cov=coverage . coverage(source=[ totest ])
cov.start()).
#代码
cov.stop())
cov.report())
cov.html _报告(directory=cov html ))
Source指定要统计的文件,source=[total]只统计totest.py的覆盖率
指定从目录生成html的路径
使用覆盖率来计算web程序覆盖率。
Web程序通常在启动服务后循环接收消息,不会自动退出。覆盖率使用atexit模块在实现中注册回调函数,并在退出Python时将内存覆盖率结果写入一个文件。的测试脚本必须正常结束,或者以SIGINT 2信号结束,才能从atexit开始,无法得到覆盖结果。因为CTRL C发送SIGINT 2信号,所以前台启动的服务可以在CTRL C停止后输出结果。