如果衡量單元測試對相應代碼的測試重量,覆寫率是一個必要非充分條件,是以統計代碼的覆寫率,檢視單測是否充分,就尤為的重要。這裡針對python-unittest的單測的覆寫率coverage進行使用說明與分析.
coverage簡介:
coverage是一種用于統計Python代碼覆寫率的工具,通過它可以檢測測試代碼對被測代碼的覆寫率如何。可以高亮顯示代碼中哪些語句未被執行,哪些執行了,友善單測。并且,coverage支援分支覆寫率統計,可以生成HTML/XML報告。
官方文檔:http://coverage.readthedocs.org/en/latest/
擷取位址:http://pypi.python.org/pypi/coverage
使用coverage統計代碼覆寫率的步驟:
- 安裝coverage包: pip install coverage
- 在源代碼的根目錄的路徑下面,添加檔案‘.coveragerc.py’
1 # 檔案中的代碼為:
2 [run]
3 branch = True
4 source = xxx #項目名稱xxx
- 進入目前待執行的檔案路徑下面
- 執行
- # 列印幫助資訊
- # 執行test_xxx.py檔案,會自動生成一個覆寫率統計結果檔案.coverage
- # 檢視coverage報告,讀取.coverage檔案并列印到螢幕上,可以在指令行裡看到統計結果
- # 生成顯示整體的covergae html形式的報告 (在目前同路徑下生成一個report檔案夾,裡面包含html形式的報告。通過檢視report檔案夾下的内容即可)
- 備注:coverage run test.py指令運作的檔案,會統計項目中包括測試檔案本身在内的所有檔案,run參數的子參數—source可以指定要統計的檔案:$ coverage run --source=totest.py test.py 可以隻統計totest.py檔案。
- 注意事項:
如果是針對單測的覆寫率統計,需要在單測檔案test_xxx.py的代碼的最後加上。這樣可以執行整個單測代碼,然後執行coverage run test_xxx.py 即可。
1 if __name__ == "__main__":
2
發散:
- 原理:coverage.py利用了Python虛拟機的trace機制