Coverage——Django代碼覆蓋率測(cè)試
Coverage是一個(gè)用來(lái)測(cè)試python程序代碼覆蓋率的工具苞轿,它能夠識(shí)別代碼的哪些部分已經(jīng)被執(zhí)行秉溉,并識(shí)別有哪些可以執(zhí)行但未執(zhí)行的代碼袍冷。覆蓋率測(cè)試通常用來(lái)衡量測(cè)試的有效性和完善性念秧。
安裝
方法一:
pip install coverage(但it doesn't work on my電腦:( )
方法二:
https://pypi.org/project/coverage/在此網(wǎng)站上下載安裝包并在本地安裝
(it works:) )
使用簡(jiǎn)介
1.用coverage run my_program.py arg命令來(lái)運(yùn)行程序
2.coverage report命令可以在屏幕上顯示運(yùn)行結(jié)果
可以查看已覆蓋數(shù)鸽心、未覆蓋數(shù)以及覆蓋百分比
3.coverage html命令可獲得更加詳細(xì)的信息
此命令在同級(jí)目錄下生成包含html文件的文件夾秋茫,默認(rèn)名稱為htmlcov史简,點(diǎn)擊打開(kāi)index.html即可。
4.coverage run --branch my_program.py arg命令支持分支覆蓋測(cè)量
若程序中的某一行能夠跳轉(zhuǎn)到多個(gè)下一行(例如if語(yǔ)句)肛著,那么coverage會(huì)跟蹤實(shí)際訪問(wèn)過(guò)哪些目標(biāo)圆兵,并且標(biāo)記出沒(méi)有被訪問(wèn)的代碼。相應(yīng)的html報(bào)告中枢贿,未執(zhí)行的分支以黃色顯示殉农,右側(cè)注釋也會(huì)顯示未執(zhí)行的分支行號(hào)。
5.coverage xml命令可以生成xml格式的報(bào)告
實(shí)例
$coverage run manage.py test
$coverage html
生成網(wǎng)頁(yè)如下圖:
可以通過(guò)點(diǎn)擊 Module 列中列出的文件名來(lái)打開(kāi)一個(gè)新的頁(yè)面局荚,頁(yè)面中將會(huì)明顯標(biāo)識(shí)出代碼中沒(méi)有被單體覆蓋的部分超凳。
其他
coverage.py 支持配置文件。配置文件格式是傳統(tǒng)的“.ini”文件耀态,還可以使用 # 或者 ; 來(lái)添加注釋轮傍。
Coverage.py 也允許在上述提到的配置文件中指定需要解析的源文件。在配置文件中設(shè)置了需要解析的文件后就可以通過(guò)運(yùn)行 coverage.py 來(lái)看運(yùn)行結(jié)果首装。它還支持“--source”命令行選項(xiàng)创夜。
coverage.py還就是它支持插件。你可以自己寫插件簿盅,也可以從網(wǎng)上下載并安裝別人的插件來(lái)增強(qiáng) coverage.py 的功能挥下。
總結(jié)
Coverage.py 可以檢測(cè)單體測(cè)試代碼并且發(fā)現(xiàn)單體測(cè)試覆蓋中的漏洞揍魂,但高質(zhì)量的測(cè)試仍然需要自己編寫桨醋。coverage的配置相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,但是我在配置的過(guò)程中還是踩了不少坑现斋,例如報(bào)錯(cuò)DJANGO_SETTINGS_MODULE or call settings.configure()等喜最。真誠(chéng)建議大家遇到坑時(shí)使用google而不是百度搜索==
參考:https://coverage.readthedocs.io/en/v4.5.x/