python代码覆盖率(下)--- coverage.py api

前言

使用pytest-cov 无法统计用 api调用服务的测试脚本所覆盖率,但大部分的项目基本也是使用api调用。所以我们额外需要使用coverage.py api 来统计。
当你安装pytest-cov时,已经默认安装了coverage 这个库。

服务启动

要想扫描到代码,必须在服务启动的时候要插入coverage相关配置。
我这边是flask 启动的,所以在flask启动的代码上添加,如下:

if __name__ == '__main__':
    cov = Coverage()
    cov.start()  # 开始检测代码
    print ("qidong")
    app.run(debug=True, host='0.0.0.0',port=9098)  #原本只有这一行
    cov.stop()  # 停止纪录
    print ("guanbi")
    cov.save()  # 保存在 .coverage 中
    print ("save")
    cov.html_report()  # 生成 HTML 报告

原本我们是python xx.py 这样启动,但现在不可以。
需要改成这样,source 表示目录,xx表示执行文件。

	coverage run --source='/xxx/' xx.py    

启动运行图如下:在这里插入图片描述 然后调用你的自动化脚本(自动化脚本是直接调的该服务提供的api 。)
在这里插入图片描述
自动化如果正常运行,能看到运行的请求

以上说明你的脚本跟服务是没问题的

ctr-c停掉该脚本后,最后显示save,如果显示”Coverage.py warning: No data was collected. (no-data-collected)“ 说明的服务运行方式有问题,coverage 服务没有运行到你代码

报告生成

输入以下命令

coverage report

在这里插入图片描述

最后一步最后输入

coverage html

这样就可以省 html 文件了。

导出在window上看,具体点击某个文件,点击run,你可以看到绿色的就是运行的。但有问题是,你会发现有些代码应该是要被执行,但却没有被执行。所以coverage的数据准不准很难说。

发布了34 篇原创文章 · 获赞 38 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LANNY8588/article/details/100047440