注意:琐碎的细节非常多,遇到问题多看看官方文档

1、命令行运行
如果程序的运行方式是:python my_program.py arg1 arg2
则替换成如下命令:coverage run my_program.py arg1 arg2
即用coverage脚本替代python命令启动程序。

2、和nosetests联合使用
有两种方式:
(1)coverage run $(which nosetests)
(2)nosetests --with-coverage ,这种方式使用nose builtin coverage模块,比官方coverage模块支持的功能少。使用时,优先考虑第一种方式

3、指定/忽略统计模块,忽略指定代码行
run命令的–source选项可指定哪些目录的文件被统计
coverage run --source=dir1,dir2
还可以指定模块,或在代码中添加指定的注释以忽略某些行代码,具体见官方文档

4、最佳实践
把coverage运行相关的option写在配置文件中,配置文件比命令行支持更多种类的option

5、coverage combine
coverage run 命令会生成 .coverage 文件,文件中存储了覆盖率统计结果。有时我们可能会分开跑不同类型的case,比如单独跑单测,再跑模块case,这样就会生成2个 .coverage 文件。将两个文件重命名为 .coverage.xxx 后移动到同一个目录,使用combine 命令,即可合并统计结果。

注意:coverage 通过文件的绝对路径,判断不同测试中的文件是否是同一个文件,是否能合并,因此不同测试中,源代码的文件位置要一致。如果不一致,可以通过在配置文件中 [path] section 配置。具体见path文档。

6、coverage run --parallel-mode
–parallel-mode 模式下创建的数据文件命名方式为 .coverage.machine_name.process_id.random_num,可以直接用于combine操作。这里 --parallel-mode 不是指并发或分布式之类的意思,仅仅是为了从不同的进程收集数据后combine。

7、coverage run -a
coverage.py 每次run会删除已有的 .coverage 文件,如果使用 -a 选项,则不会删除 .coverage,直接修改已有的 .coverage ,将前后两次的统计结果自动合并。

8、Measuring sub-processes
统计覆盖率情况,必须使用coverage.py 代替 python 启动程序,有些sub-process程序会默认使用python启动,导致sub-process部分代码覆盖率无法统计。coverage默认支持python threading(不是thread模块) 模块实现的多线程统计,其他的比如multi-process,gevent等需要另行配置,见文档

9、coverage run --branch
–branch 选项会增加分支覆盖率的统计,具体来说在 coverage report -m 输出的报告中增加 Branch and BrPart (for Partial Branch) 2列。

coverage中分支的定义是,一条语句执行完后,下一条要执行的语句有几种可能,就算几个分支。 比如下面的 if conditon 后,如果conditon 为 true,则下一条执行的语句为 execute_1;否则下一条执行的为 execute_2。尽管没有else,if 后可能执行的语句有2条,因此算2个分支。

if condition:exectue_1
execute_2

Branch表示有多少个分支。

BrPart (for Partial Branch):假设一条语句后下一条要执行的可能语句有3条,测试只覆盖了其中1条,就说有2个BrPart,即有2个可能性测试未覆盖。一般报告中 “36->38” 这样箭头连接2个数字的标志,表示 36行后执行38行 这个分支没覆盖。

10、覆盖率计算
(1)不统计分支覆盖率时,覆盖率 = 已执行的代码行数 / 所有可执行的代码行数
(2)统计分支覆盖率时,覆盖率 = actual execution / execution opportunities,具体见官方文档。这个还没看懂…

11、生成报告
在 .coverage 文件所在目录,执行下列命令生成不同格式的报告
coverage report -m
coverage html
coverage xml
coverage annotate:生成带注释的源文件,标记哪些行被执行(>符号),哪些没有(!符号)

12、plugins
coverage 已有 Django,Mako plugin 可直接使用。具体细节及其他plugin见plugin

13、FAQ
FAQ

python coverage相关推荐

  1. python coverage 使用技巧

    import coverage def aadd(): class object(): pass def work(self):pass def work() cove = coverage.Cove ...

  2. Python 学习入门(1)—— PyDev

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! PyDe ...

  3. python 调试,Python 学习入门--pydev调试

    运行程序 运行 Python 源程序,有两种方法,以 example.py 为例: example.py代码: #!/usr/bin/env python # -*- coding:utf-8 -*- ...

  4. 学习笔记: 代码覆盖率-code coverage

    由于<Pycharm学习笔记01:PyCharm介绍>提出此名词,比较陌生. Code coverage is a metric that can help you understand ...

  5. python单元测试知识总结

    开发人员最讨厌的东西除了编写文档外,估计就是写测试用例了. 由于任务需求,需要搭建python的单元测试框架,并编写测试用例.但之前几乎没有接触过,所了解的也就只有自带的unittest框架了. 经过 ...

  6. 白盒测试工具 - sonar的安装、配置与使用入门手册,用sonar检查代码质量实战演示

    sonar 检测代码质量实战演示 第一章:sonarqube 的安装与启用 ① sonarqube 获取 ② sonarqube 配置 ③ sonarqube 驱动放置 ④ sonarqube 的启动 ...

  7. PyDev的使用-高效Py编程

    对于VIM使用Python,可以使用Flake8:有人将PyFlakes和PEP 8两个代码检查软件整合到一起,打造出flake8,该工具可通过插件vim-flake8与vim整合.   对于Ecli ...

  8. PX4 CMakeLists.txt 文件剖析

    PX4 CMakeLists.txt 文件剖析 前面对于 PX4 的 Makefile 已经做了比较详细的分析, 见这里, 这里进一步对 PX4 的 CMakeLists.txt 文件结构进行进一步的 ...

  9. PyDev for Eclipse 简介

    参考:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev PyDev for Eclipse 简介 PyDev for Ec ...

最新文章

  1. 获取class文件对象三种方式
  2. “摔杯一怒为俞渝” 当当创始人李国庆:蓄谋已久的阴谋 不吐不快
  3. java.lang.VerifyError: Expecting a stack map frame
  4. mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)
  5. laravel按月/时间区间查询数据
  6. Security+ 学习笔记43 无线网络
  7. 忽略字母大小写情况下统计字符出现的次数
  8. win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
  9. NO.5 Android Opencv 相机人脸识别
  10. 理论+实验:Apache网页与安全优化(网页压缩、网页缓存、隐藏版本信息、网页图片防盗链)
  11. 全球地名中英文对照表(M)
  12. 虚拟带库 Vistor + TSM 安装 (在家折腾了一个周末)
  13. datawhale——阿里天池--AI助力精准气象和海洋预测学习笔记 task1
  14. 鸿蒙系统下拉菜单,华为鸿蒙系统官方
  15. python 读取数据出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
  16. excel在一个单元格输入内容,在其他单元格同步显示
  17. 奶牛问题3:奶牛派对
  18. 神经网络之误差反向传播法
  19. 计算机毕业设计(70)php小程序毕设作品之干洗店洗衣小程序系统
  20. 1990-2019年地级市地方财政收支数据(全市)

热门文章

  1. 为信仰充值——GoogleDeveloperDay
  2. 德声音频杂谈:Tree Audio 电子管模拟调音台混音演示
  3. HTML5七夕情人节表白代码 (动态3D相册)HTML+CSS+JS
  4. 原型模式(Prototype) —— 就是复制那回事
  5. win2003系统80端口被占用
  6. mangos服务器文件,Mangos Zero服务器搭建简要过程及常见问题
  7. Java中字符串CST的时间日期转换
  8. linux基础49——expr
  9. SQL uniqueidentifier
  10. Windows自带计算器快捷键