溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

統(tǒng)計代碼測試覆蓋率-Python

發(fā)布時間:2020-07-12 07:01:08 來源:網(wǎng)絡 閱讀:381 作者:louiezhou001 欄目:軟件技術

衡量Unit Test(單元測試)是否充分, 覆蓋率是一個必要指標, 是檢驗單元測試的重要依據(jù), 這里針對python unittest 的單元測試覆蓋率coverage進行分享.

來自官方的解釋:

Coverage.py runs on many versions of Python:

CPython 2.6, 2.7 and 3.3 through alpha 3.8.

PyPy2 6.0 and PyPy3 6.0.

Jython 2.7.1, though not for reporting.

IronPython 2.7.7, though not for reporting.

?

注: Coverage支持豐富的python版本

?

  • Install Coverage

pip install coverage

無論是Windows, Linux 還是Mac os,安裝都非常方便, 如果提示pip command not found, 請看這里或者自行百度.

測試代碼:

我們現(xiàn)在已經(jīng)installed coverage, 需要使用它, 讓我們來創(chuàng)建一個Module? 然后調(diào)用mymath.py, 代碼如下:

統(tǒng)計代碼測試覆蓋率-Python

這個module里我們定義了4個方法, 分別是add, subtract, multiply, divide(+,-,*,/)

讓我們來測試這模塊, 在call之前先要import我們的module,下面是我們的測試代碼

?

Use coverage run to run your progame and gather data:

然后我們就可以使用Coverage 進行驗證了

coverage run test_mymath.py

執(zhí)行上面命令:

統(tǒng)計代碼測試覆蓋率-Python

如果你的Module有參數(shù),你可以使用下面方法

coverage run test.py arg1 arg2

?

Use coverage report to report on the results:

統(tǒng)計代碼測試覆蓋率-Python

?

For a nice presentation, use coverage html to get annotated HTML lisitings detailing missed lines:

coverage html

使用上述命令會在目錄下生成htmlcov文件, 包含了詳細的測試報告.

統(tǒng)計代碼測試覆蓋率-Python

?

瀏覽器查看報告詳情

統(tǒng)計代碼測試覆蓋率-Python

統(tǒng)計代碼測試覆蓋率-Python

?

統(tǒng)計代碼測試覆蓋率-Python

從中不難發(fā)現(xiàn), 在test_mymath.py中我們只調(diào)用了mymath.py的add 方法, 另外3個方法沒有調(diào)用,因此代碼覆蓋率沒有達到100%, report中用紅色標注提示我們, 而 test_mymath.py 全部代碼都被完全Coverage, 覆蓋率100%.

?

這么一個傻瓜式工具使用非常easy, 通過這個實例實戰(zhàn), 讓我們比較直觀的了解單元測試代碼覆蓋率的重要性, 平時的工作中可能被各種業(yè)務和框架纏繞, 沒有把中心放在這上面, 但它卻是非常重要的, 用事實和數(shù)據(jù)說話抵過千言萬語.

?

注: Java也有相應的Coverage工具 jacoco, EMMA等.

?

參考文獻:?https://pypi.org/project/coverage/

統(tǒng)計代碼測試覆蓋率-Python

?

今日精選推薦

JMeter接口測試-if控制器

JMeter數(shù)據(jù)庫操作

Jmeter接口測試-正則表達式

JMeter中文返回亂碼

Jmeter接口測試-參數(shù)化

JMeter接口測試-基礎

測試-感想

?

?

咨詢工作加微信

統(tǒng)計代碼測試覆蓋率-Python

掃描二維碼

?

歡迎自薦和推薦, 需要的微信推送簡歷!

請猛戳下面二維碼了解更多

統(tǒng)計代碼測試覆蓋率-Python


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI