coverage.py是一个用来统计python程序代码覆盖率的工具。它使用起来非常简单,并且支持最终生成界面友好的html报告。在最新版本中,还提供了分支覆盖的功能。

官方网站:

http://nedbatchelder.com/code/coverage/

win32版本下载地址:

http://pypi.python.org/pypi/coverage

或者通过easy-install来安装:


easy_install coverage

装好后,在c:\Python25\Scripts\(假设装在c盘)目录会有一个coverage.exe。通过这个exe基本上可以完成我们所有需要的功能。运行一下,如果发现少了那个模块,请先安装easy_install。

Coverage Command Line

命令行使用说明: 详见:http://nedbatchelder.com/code/coverage/cmd.html

最关键核心的几个参数使用如下:

1. run

执行代码覆盖率统计,只需要通过coverage的run参数执行被统计代码即可。


$ coverage run my_program.py arg1 arg2

跑完后,会自动生成一个覆盖率统计结果文件(data file):.coverage。如果要修改这个默认的文件名也可以,只要设置COVERAGE_FILE环境变量。

2. report

有了覆盖率统计结果文件,只需要再运行report参数,就可以在命令里看到统计的结果。


$ coverage report
Name                      Stmts   Exec  Cover
---------------------------------------------
my_program                   20     16    80%
my_module                    15     13    86%
my_other_module              56     50    89%
---------------------------------------------
TOTAL                        91     79    87%

3. html

最帅最酷的功能了,直接生成html的测试报告。


$ coverage html -d covhtml

生成的报告非常酷,直接关联代码,高亮显示覆盖和未覆盖的代码,支持排序。可以在这个地址预览一下:

http://nedbatchelder.com/code/coverage/sample_html/

效果如下:

4. combine

用过代码覆盖率工具的都知道,多份结果的合并至关重要。combine这个参数我琢磨了很久,开始总是合并不成功。后来终于明白了。执行合并操作很简单,只要把需要合并的覆盖率结果数据文件放在同一个目录里,然后执行:


coverage combine

即可。但是,其实对目录里的结果文件是有要求的,要求就是文件名的格式,需要合并的文件必须有同样的前缀,然后后面跟一个名称(通常是机器名),然后再跟一个数字(通常是进程ID),比如:


.coverage.CoderZh.1234
.coverage.Cnblogs.

为了方便执行结果的合并,我们在前面执行统计时,在run参数后面跟一个-p参数,会自动生成符合合并条件的结果文件。


$ coverage run -p my_program.py arg1 arg2

合并后,会再生成一个.coverage文件,然后再执行html查看合并后的报告吧。

其他几个erase annotate debug 参数就不介绍了。

Coverage API

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


import coverage

cov = coverage.coverage()
cov.start() # .. run your code .. cov.stop()
cov.save()

coverage的构造函数可以设置结果文件的名称等。有个函数容易弄错,就是use_cache,如果设置的use_cache(0),表示不在硬盘上读写结果文件。如果需要结果数据用来合并,一定要设置use_cache(1)。

coverage提供一些很好用的函数,如:exclude(排除统计的代码),html_report(生成html报告),report(控制台输出结果)

下篇讲讲如何在测试django应用时,编写一个自己的test runner来执行代码覆盖率的统计。

Python 代码覆盖率统计工具 coverage.py的更多相关文章

  1. Python 测试代码覆盖率统计工具 coverage.py

    安装 您可以通常的方式安装coverage.py.最简单的方法是使用pip: $ pip install coverage 要安装预发布版本,您需要指定--pre: $ pip install --p ...

  2. Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...

  3. Python代码统计工具

    目录 Python代码统计工具 声明 一. 问题提出 二. 代码实现 三. 效果验证 Python代码统计工具 标签: Python 代码统计 声明 本文将对<Python实现C代码统计工具(一 ...

  4. oracle存储过程代码覆盖率统计工具

    目前针对于高级语言如C++,JAVA,C#等工程都有相关的代码覆盖率统计工具,但是对于oracle存储过程或者数据库sql等方面的项目,代码覆盖率统计和扫描工具相对较少. 因此针对这种情况,设计了代码 ...

  5. python的构建工具setup.py

    一.构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用“pip install  模块名”或者“python setup.py install”,前者是在线安装,会安 ...

  6. python代码覆盖率统计-coverage

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

  7. C/C++代码覆盖率统计工具:gcov&&gcovr安装和简单使用

    gcov安装 Linux ver: gcov是gcc的自带功能 属于GNU 不用特别安装 Windows ver: 在windows下安装可以使用gcov的gcc 之前试过mingw和Cygwin64 ...

  8. 利用coverage工具进行Python代码覆盖率测试

    Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率情况. Coverage安装 1.安装命令:pip install coverage 2.查看cov ...

  9. python代码覆盖率coverage简介与用法

    如果衡量单元测试对相应代码的测试重量,覆盖率是一个必要非充分条件,因此统计代码的覆盖率,检视单测是否充分,就尤为的重要.这里针对python-unittest的单测的覆盖率coverage进行使用说明 ...

随机推荐

  1. 【pymongo】mongodb cursor id not valid error

    参考来源: http://stackoverflow.com/questions/10298354/mongodb-cursor-id-not-valid-error http://stackover ...

  2. ios build时,Undefined symbols for architecture xxx问题的总结

    简单来说,Undefined symbols基本上等于JAVA的ClassNotFoundException,最常见的原因有这几种: build的时候没有加framework 比如说,有一段代码我用了 ...

  3. github入门教程

    1.下载git windows 客户端 https://git-for-windows.github.io/ 2.配置github 安装windows客户端以后,在里面输入如下命令 首先在本地创建ss ...

  4. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

  5. VMware桥接模式无法自动化获取IP的解决方法

    虚拟机桥接无法自动获取IP的解决方法 在虚拟机VM里面装了centos系统,网卡选用桥接方式. 刚开始的时候还能自动获取到IP地址,突然有一天IP消失了,再怎么重启都无法获取IP地址.因为之前是可以获 ...

  6. java基础-包

    浏览以下内容前,请点击并阅读 声明 为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中.组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注 ...

  7. 从零开始山寨Caffe·肆:线程系统

    不精通多线程优化的程序员,不是好程序员,连码农都不是. ——并行计算时代掌握多线程的重要性 线程与操作系统 用户线程与内核线程 广义上线程分为用户线程和内核线程. 前者已经绝迹,它一般只存在于早期不支 ...

  8. 基于UDP协议的socket编程示例

    客户端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; impo ...

  9. 细读cow.osg

    细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点 ...

  10. Django 视图与网址进阶

    一 .在网页上做加减法 1. 采用 /add/?a=4&b=5 这样GET方法进行 1 2 3 django-admin.py startproject zqxt_views cd zqxt_ ...