您好,登錄后才能下訂單哦!
如何使用Python代碼覆蓋率工具Coverage,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
單元測試代碼覆蓋率作為一種度量方式,可以計算單元測試用例對于被測代碼的覆蓋程度,即:被執(zhí)行的代碼數(shù)量和代碼總數(shù)量的比值
統(tǒng)計代碼覆蓋率,經(jīng)常在單元測試后再進行,可以為測試結(jié)果提供評判依據(jù)
Python 項目最常使用的代碼覆蓋率統(tǒng)計工具就是:Coverage
Coverage 是用于統(tǒng)計 Python 代碼覆蓋率的工具,不僅支持分支覆蓋率統(tǒng)計,生成 HTML 格式的統(tǒng)計報告,而且可以集成到 Jenkins 中使用
安裝 Coverage 依賴同樣是使用 pip 安裝
# 安裝 Coverage 依賴
pip3 install coverage
Coverage 官方提供了 2 種方式,用于統(tǒng)計代碼覆蓋率,分別是:
1、Coverage 命令行
2、Coverage API
更詳細的介紹可以參考官方文檔:
https://coverage.readthedocs.io/en/latest/
# 被測代碼
# main.py
def get_level(cource):
"""
自定義的方法
:param cource:成績
:return:
"""
if cource >= 90:
return "優(yōu)秀"
elif cource >= 80:
return "良好"
elif cource >= 60:
return "合格"
elif cource >= 40:
return "不合格"
else:
return "差"
# 單元測試
# test_get_level.py
import unittest
from main import *
class GetLevel(unittest.TestCase):
def test_get_level1(self):
self.assertEquals(get_level(90), "優(yōu)秀")
def test_get_level2(self):
self.assertEquals(get_level(80), "良好")
if __name__ == '__main__':
unittest.main(verbosity=2)
# 1、搜集被測代碼覆蓋率信息,保存到 .coverage 文件中
coverage run test_get_level.py
# 2、生成覆蓋率統(tǒng)計結(jié)果報告
coverage html -d coverage_result
# 使用 API 生成代碼覆蓋率統(tǒng)計報告
# exec_api.py
import coverage
import unittest
# 實例化一個對象
cov = coverage.coverage()
cov.start()
# 測試套件
suite = unittest.defaultTestLoader.discover("./", "test_get_level.py")
unittest.TextTestRunner().run(suite)
# 結(jié)束分析
cov.stop()
# 結(jié)果保存
cov.save()
# 命令行模式展示結(jié)果
cov.report()
# 生成HTML覆蓋率報告
cov.html_report(directory='result_html')
上面只是通過一個簡單的 Python 方法結(jié)合 unittest 單元測試框架,展示了 Coverage 獲取代碼覆蓋率統(tǒng)計報告的方法
實際項目中,更多應(yīng)用場景是: Python自動化、Django/Flask Web項目統(tǒng)計單元測試用例的代碼覆蓋率,以提升產(chǎn)品的質(zhì)量關(guān)于如何使用Python代碼覆蓋率工具Coverage問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。