天天看點

python代碼覆寫率coverage簡介與用法

如果衡量單元測試對相應代碼的測試重量,覆寫率是一個必要非充分條件,是以統計代碼的覆寫率,檢視單測是否充分,就尤為的重要。這裡針對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      
  • 進入目前待執行的檔案路徑下面
  • 執行
  1. # 列印幫助資訊
  2. # 執行test_xxx.py檔案,會自動生成一個覆寫率統計結果檔案.coverage
  3. # 檢視coverage報告,讀取.coverage檔案并列印到螢幕上,可以在指令行裡看到統計結果
  4. # 生成顯示整體的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機制