簡(jiǎn)介:
pytest-cov 是pytest的一個(gè)插件,其本質(zhì)也是引用 python coverage 庫 用來統(tǒng)計(jì)代碼覆蓋率。以下這篇文章只供理解,真實(shí)項(xiàng)目的話,我們都是用api調(diào)用接口的,所以真實(shí)項(xiàng)目使用會(huì)更復(fù)雜一些,這個(gè)待下次說明。
另外說明:coverage 是在覆蓋率是語句覆蓋的一種,不能對(duì)你的邏輯做判讀,真實(shí)意義的話,需要多結(jié)合項(xiàng)目本身,這個(gè)覆蓋率數(shù)據(jù)沒有很強(qiáng)大說服力,不要盲目追求。
一般來說:
路徑覆蓋率 > 判定覆蓋 > 語句覆蓋
安裝
pip install pytest-cover
安裝完后有
py.test -h 可以看到多了以下的用法,說明安裝成功:
coverage reporting with distributed testing support:
范例
新建三個(gè)文件,cau.py 與test_conver.py 在同一個(gè)目錄code下。run.py文件在上一級(jí)目錄pp下。
代碼關(guān)系如下。
1.新建函數(shù)文件cau.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def
cau
(
type
,
n1
,
n2
)
:
if
type
==
1
:
a
=
n1
+
n2
elif
type
==
2
:
a
=
n1
-
n2
else
:
a
=
n1
*
n2
return
a
2.新建test_conver.py測(cè)試文件:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from
code
.
cau
import
cau
class
Test_cover
:
def
test_add
(
self
)
:
a
=
cau
(
1
,
2
,
3
)
assert
a
==
3
3.新建執(zhí)行腳本run.py
#!/usr/bin/env ```python
# -*- coding: utf-8 -*-
import
pytest
if
__name__
==
'__main__'
:
pytest
.
main
(
[
"--cov=./code/"
,
"--cov-report=html"
,
"--cov-config=./code/.coveragerc"
]
)
# 執(zhí)行某個(gè)目錄下case
說明:–cov參數(shù) 后面接的是測(cè)試的目錄 (經(jīng)給測(cè)試,不能指定某個(gè)特定的文件。),程序代碼跟測(cè)試腳本必須在同一個(gè)文件下。 --cov-report=html 生成報(bào)告 ,只需要python run.py 就可以運(yùn)行
coveragerc 意思是跳過某些腳本的覆蓋率測(cè)試。此處跳過test_cover.py文件跟init文件。
內(nèi)容如下:
[run]
omit =
tests/*
*/__init__.py
*/test_cover.py
結(jié)果
生成完后可以直接點(diǎn)擊indexhtml
可以看到如下的執(zhí)行情況,綠色代表運(yùn)行,紅色代表未被執(zhí)行,自己檢查下代碼邏輯,可以得出該結(jié)果是正確的。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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