前提:
1.假定已經安裝好coverage.py(ubuntu 10.10+python.2.7+coverage3.5.1)
2.項目裡有模組do.py以及測試它的單元測試模組doTEST.py
命令列:
$ cd /home/user1/workspace/hp1
$ coverage run doTEST.py
$ coverage report
$ coverage html
命令解釋:
第一個命令進入項目目錄,第二個命令 執行coverage命令,調用單元測試,進進行統計(目前的目錄產生.coveage檔案,該檔案預設隱藏)第三個命令是讀取.coveage檔案並列印到螢幕,第四個命令時,產生詳細的HTML報表(htmlcov檔案夾)
補充:
1)coverage的另一種方式是可以作為模組被程式import,通過代碼儲存統計,未嘗試。
2)如果原來測試的代碼接收參數,如
$ doTEST.py 100 200
那麼可以這樣調用我們的單元測試
$ coverage run doTEST.py 100 200
疑問:
我似乎覺得重新執行上述命令時,沒有重建報表,如果是這樣的話應該在執行之前執行rm命令將產生的.coveage和htmlcov檔案夾先刪除掉,待確認
查看HTML報表:
進入htmlcov目錄,使用firefox開啟index.html檔案,該檔案裡包含一個列表,列出了doTEST.py使用過的所有模組的代碼覆蓋資訊,其中也包括我們關心的do.py的情況,如果測試案例完善,理論上do.py每一行代碼都應該被執行過(被覆蓋),反之如果do.py裡某些代碼沒有被執行,則說明我們的測試案例還不完善,需要增加測試案例,以保證do.py每一行都被執行過。
在目錄頁我們可以看到概要資訊,點擊檔案名稱可以查看資訊,例如:
Coverage for
verify : 98%
65 statements 63 run 2 missing 0 excluded 0 partial
verify是模組名稱(verify.py)該模組有65條語句,63條被執行,2條未被執行,覆蓋率98%,點擊run和missing還會對代碼進行標紅和標綠,紅色表示未覆蓋,綠色表示已覆蓋
分支覆蓋:
$ coverage run --branch doTEST.py