Python - Coverage 代碼覆蓋率
衡量單元測試對相應代碼的測試重量,覆蓋率是一個必要非充分條件,因此統計代碼的覆蓋率,檢視單測是否充分,就尤為的重要。這里針對python-unittest的單測的覆蓋率coverage進行使用說明與分析.
coverage是一種用于統計Python代碼覆蓋率的工具,通過它可以檢測測試代碼對被測代碼的覆蓋率如何??梢愿吡溜@示代碼中哪些語句未被執行,哪些執行了,方便單測。并且,coverage支持分支覆蓋率統計,可以生成HTML/XML報告。
命令行使用說明: 詳見:http://nedbatchelder.com/code/coverage/cmd.html
1. run
運行一個.py的文件方式:python test.py
現在使用coverage執行.py的文件方式:coverage run test.py
會自動生成一個覆蓋率統計結果文件(data file):.coverage,這個文件在你的test.py的文件對應目錄下。
2. report
coverage report
有了覆蓋率統計結果文件,只需要再運行report參數,就可以在命令里看到統計的結果。
$ coverage report Name Stmts Exec Cover --------------------------------------------- my_program 20 16 80% my_module 15 13 86% my_other_module 56 50 89% --------------------------------------------- TOTAL 91 79 87%
3. html
coverage html -d covhtml
生成html的測試報告。
備注:coverage run test.py命令運行的文件,會統計項目中包括測試文件本身在內的所有文件,run參數的子參數—source可以指定要統計的文件:$ coverage run --source=totest.py test.py 可以只統計totest.py文件。
如果是針對單測的覆蓋率統計,需要在單測文件test_xxx.py的代碼的最后加上。這樣可以執行整個單測代碼,然后執行coverage run test_xxx.py 即可。
if __name__ == "__main__": unittest.main()

浙公網安備 33010602011771號