zoukankan      html  css  js  c++  java
  • python代码覆盖率统计-coverage

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

    官方网站:

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

    win32版本下载地址:

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

    或者通过pip来安装:

    pip install coverage

    如果安装后调用出现问题,请留意安装过程的报错信息,做对应的调整

    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

    4. combine

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

    coverage combine

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

    .coverage.CoderZh.1234
    .coverage.Cnblogs.5678

    为了方便执行结果的合并,我们在前面执行统计时,在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(控制台输出结果)

  • 相关阅读:
    Linux进程间通信之信号量
    C语言文件操作
    Linux多线程同步方法
    Linux进程间通信之共享内存
    关于P2P下载的思考
    学习Jxta,初窥门径
    庆祝一下,基于JXTA的P2P文件共享传输文件测试成功。
    关于java nio在windows下实现
    Java aio和JSR 203
    关于文件目录的P2P共享问题
  • 原文地址:https://www.cnblogs.com/shen-qiang/p/11940654.html
Copyright © 2011-2022 走看看