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

参考链接:https://blog.csdn.net/xiaoxinyu316/article/details/53695342

coverage简介:

coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码对被测代码的覆盖率如何。可以高亮显示代码中哪些语句未被执行,哪些执行了,方便单测。并且,coverage支持分支覆盖率统计,可以生成HTML/XML报告。

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

获取地址:http://pypi.python.org/pypi/coverage

使用coverage统计代码覆盖率的步骤:

  • 安装coverage包: pip install coverage
  • 在源代码的根目录的路径下面,添加文件‘.coveragerc.py’
 # 文件中的代码为:
[run]
branch = True
source = xxx #项目名称xxx
  • 进入当前待执行的文件路径下面
  • 执行
  1. coverage run --help   # 打印帮助信息
  2. coverage run test_xxx.py                # 执行test_xxx.py文件,会自动生成一个覆盖率统计结果文件.coverage
  3. coverage report -m(带有详细信息)                  # 查看coverage报告,读取.coverage文件并打印到屏幕上,可以在命令行里看到统计结果
  4. coverage html -d report                # 生成显示整体的covergae html形式的报告 (在当前同路径下生成一个report文件夹,里面包含html形式的报告。通过查看report文件夹下的内容即可)
  • 备注:coverage run test.py命令运行的文件,会统计项目中包括测试文件本身在内的所有文件,run参数的子参数—source可以指定要统计的文件:$ coverage run --source=totest.py test.py 可以只统计totest.py文件。
  • 注意事项:

如果是针对单测的覆盖率统计,需要在单测文件test_xxx.py的代码的最后加上。这样可以执行整个单测代码,然后执行coverage run test_xxx.py 即可。

 if __name__ == "__main__":
unittest.main()

发散:

  • 原理:coverage.py利用了Python虚拟机的trace机制

参考链接:https://blog.csdn.net/xluren/article/details/46799939

最新文章

  1. SSH远程会话管理工具 - screen使用教程
  2. mysqldump 备份命令使用中的一些经验总结
  3. 树莓派wiringPi库详解
  4. python web框架——扩展Django&tornado
  5. “HTTPS”安全在哪里?
  6. [课程设计]Scrum日记本项目进度
  7. 利用PPT的WebBroswer控件助力系统汇报演示
  8. 40. Combination Sum II
  9. java 复习002
  10. DM8168 DVRRDK软件框架研究
  11. 使用 js 设置组合快捷键,支持多个组合键定义,还支持 React
  12. 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi
  13. 第二个项目:WC
  14. SQLSERVER 2012 之 “代理 XP”组件已作为此服务器安全配置的一部分被关闭
  15. 翻译api调用
  16. Fedora ssh服务,防火墙服务设置
  17. FJUT Home_W的gcd(乱搞)题解
  18. 小tip:FireFox下文本框/域百分比padding bug解决——张鑫旭
  19. 【bzoj2780】 Sevenk Love Oimaster
  20. View坐标系详解(getTop(),getLeft(),getX(),getY(),getLocationOnScreen(), getLocationInWindow())

热门文章

  1. 关于maven多个模块的build顺序 [INFO] Reactor Build Order
  2. Dell R420 RAID建立以及系统安装
  3. 谈一谈关于NODE里的N管理
  4. Codeforces Round #135 (Div. 2)---A. k-String
  5. LeetCode题解汇总
  6. ubuntu下打开eclipse·发现没有顶尖菜单项
  7. 点滴记录——Ubuntu 14.04中Solr与Tomcat整合安装
  8. 【Linux编程】进程终止和exit函数
  9. oracle 12c的数据库导进 11g
  10. Element is not clickable at point SeleniumWebdriverException