前言
使用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的数据准不准很难说。