前言
使用pytest-cov 無法統(tǒng)計(jì)用 api調(diào)用服務(wù)的測試腳本所覆蓋率,但大部分的項(xiàng)目基本也是使用api調(diào)用。所以我們額外需要使用coverage.py api 來統(tǒng)計(jì)。
當(dāng)你安裝pytest-cov時(shí),已經(jīng)默認(rèn)安裝了coverage 這個(gè)庫。
服務(wù)啟動(dòng)
要想掃描到代碼,必須在服務(wù)啟動(dòng)的時(shí)候要插入coverage相關(guān)配置。
我這邊是flask 啟動(dòng)的,所以在flask啟動(dòng)的代碼上添加,如下:
if
__name__
==
'__main__'
:
cov
=
Coverage
(
)
cov
.
start
(
)
# 開始檢測代碼
print
(
"qidong"
)
app
.
run
(
debug
=
True
,
host
=
'0.0.0.0'
,
port
=
9098
)
#原本只有這一行
cov
.
stop
(
)
# 停止紀(jì)錄
print
(
"guanbi"
)
cov
.
save
(
)
# 保存在 .coverage 中
print
(
"save"
)
cov
.
html_report
(
)
# 生成 HTML 報(bào)告
原本我們是python xx.py 這樣啟動(dòng),但現(xiàn)在不可以。
需要改成這樣,source 表示目錄,xx表示執(zhí)行文件。
coverage run --source='/xxx/' xx.py
啟動(dòng)運(yùn)行圖如下:
然后調(diào)用你的自動(dòng)化腳本(自動(dòng)化腳本是直接調(diào)的該服務(wù)提供的api 。)
自動(dòng)化如果正常運(yùn)行,能看到運(yùn)行的請求
以上說明你的腳本跟服務(wù)是沒問題的
ctr-c停掉該腳本后,最后顯示save,如果顯示”Coverage.py warning: No data was collected. (no-data-collected)“ 說明的服務(wù)運(yùn)行方式有問題,coverage 服務(wù)沒有運(yùn)行到你代碼
報(bào)告生成
輸入以下命令
coverage report
最后一步最后輸入
coverage html
這樣就可以省 html 文件了。
導(dǎo)出在window上看,具體點(diǎn)擊某個(gè)文件,點(diǎn)擊run,你可以看到綠色的就是運(yùn)行的。但有問題是,你會(huì)發(fā)現(xiàn)有些代碼應(yīng)該是要被執(zhí)行,但卻沒有被執(zhí)行。所以coverage的數(shù)據(jù)準(zhǔn)不準(zhǔn)很難說。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
