衡量Unit Test(單元測試)是否充分, 覆蓋率是一個必要指標, 是檢驗單元測試的重要依據, 這裏針對python unittest 的單元測試覆蓋率coverage進行分享.html
來自官方的解釋:python
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.app
注: Coverage支持豐富的python版本框架
Install Coverageide
pip install coverage工具
不管是Windows, Linux 仍是Mac os,安裝都很是方便, 若是提示pip command not found, 請看這裏或者自行百度.
測試代碼:
咱們如今已經installed coverage, 須要使用它, 讓咱們來建立一個Module 而後調用mymath.py, 代碼以下:
這個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
執行上面命令:
若是你的Module有參數,你可使用下面方法
coverage run test.py arg1 arg2
Use coverage report to report on the results:
For a nice presentation, use coverage html to get annotated HTML lisitings detailing missed lines:
coverage html
使用上述命令會在目錄下生成htmlcov文件, 包含了詳細的測試報告.
瀏覽器查看報告詳情
從中不難發現, 在test_mymath.py中咱們只調用了mymath.py的add 方法, 另外3個方法沒有調用,所以代碼覆蓋率沒有達到100%, report中用紅色標註提示咱們, 而 test_mymath.py 所有代碼都被徹底Coverage, 覆蓋率100%.
這麼一個傻瓜式工具使用很是easy, 經過這個實例實戰, 讓咱們比較直觀的瞭解單元測試代碼覆蓋率的重要性, 平時的工做中可能被各類業務和框架纏繞, 沒有把中心放在這上面, 但它倒是很是重要的, 用事實和數聽說話抵過千言萬語.
注: Java也有相應的Coverage工具 jacoco, EMMA等.
參考文獻: https://pypi.org/project/coverage/
今日精選推薦
諮詢工做加微信
掃描二維碼
歡迎自薦和推薦, 須要的微信推送簡歷!
請猛戳下面二維碼瞭解更多