Python 如何统计 Python Web 项目在集成测试阶段的增量代码覆盖率

归云乡 · January 17, 2020 · Last by 归云乡 replied at January 20, 2020 · 1136 hits

背景

  • leader提了个需求,想要在产品功能迭代时,测试通过的时候可以附带一份这个功能的增量代码覆盖率报告,以此来衡量测试是否充分

为什么给我来做

  • 之前是做Java的,接触过覆盖率,也尝试过统计集成测试阶段的代码覆盖率
  • 之前的情况是:
    • Java项目打成jar包,在启动时,使用JaCoCo的On-The-Fly模式,添加代理,比如java -javaagent:/root/jacoco/lib/org.jacoco.agent-0.8.4-runtime.jar=includes=com.hundsun.broker.cic.*,output=tcpserver,port=10004,address=127.0.0.1 –jar /root/test.jar
    • 测试完毕后,dump出exec文件,比如java -jar /root/jacoco/lib/org.jacoco.cli-0.8.4-nodeps.jar dump --address 127.0.0.1 --port 10004 --destfile /root/jacoco.exec
    • 最后生成覆盖率报告文件,比如java -jar org.jacoco.cli-0.8.4-nodeps.jar report jacoco.exec --classfiles /opt/JENKINS_HOME/workspace/TestCenter-UF30-CIC-6-Jacoco/Class/ --sourcefiles /opt/JENKINS_HOME/workspace/TestCenter-UF30-CIC-6-Jacoco/Source/ --html jacoco/html --csv jacoco/jacoco.csv --xml jacoco/jacoco.xml
    • 没有做过增量代码相关的

查找资料

我的疑问

  • 如何获取增量代码,比如开发的分支是从release上切出来的,提测的时候怎么能获取到改动的部分,git diff不知能不能实现
  • 假设获取到了增量代码,上述coverage.py能实现这个需求吗,如何在程序运行的时候监控到这部分代码
  • 发此贴主要是想请教一下大家,尤其是做过类似工具的前辈们,能否讲下具体实现的思路和可行性,跪谢Orz!
共收到 6 条回复 时间 点赞

大概浏览了一遍社区关于代码覆盖率的帖子,90%都是基于JaCoCo做的二次开发,跪了。😭

真的没有大佬做过Python项目集成测试阶段增量代码覆盖率相关研究的吗😕

少年 回复

感谢,这个文档我正在看。

coverage + diff_cover 解决不了你的问题?
coverage生成全量覆盖率报告xml文件,

coverage run --source=. manage.py runserver --noreload
coverage xml

然后diff-cover是能够生成增量覆盖率

diff-cover coverage.xml --html-report report.html
leaves 回复

感谢,我目前还处于调研阶段,不太确定可行的路径是怎样的,发这个帖子主要是为了咨询一下大家可行的方案,或者做过相关事情的经验等🍻

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up