摘要:運行命令通過命令程序,并收集信息。在運行過程中,會產生一些警告,這些警告會影響到統計的進程。這些警告主要包括如果在運行的過程中,代碼發生改變,則會報這個錯誤,表示是修改后的名稱。
歡迎大家光臨我的博客 簡介
coverage是一個檢測單元測試覆蓋率的工具,即檢查你的測試用例是否覆蓋到了所有的代碼。
??當你通過pip install coverage成功安裝完coverage后,就會在python命令的同級目錄,生成一個coverage可執行程序。coverage對應不同版本的python程序,生成了不同版本的可執行程序,如python2平臺的coverage2,python3平臺的coverage3,以及coverage-X.Y,X、Y為python的版本號。
??coverage命令共有5個指明coverage動作的參數,分別是:
run - 運行一個python程序并收集運行數據
report - 生成報告
html - 把結果輸出html格式
xml - 把結果輸出xml格式
annotate - 運行一個python程序并收集運行數據
erase - 清楚之前coverage收集的數據
combine - 合并coverage收集的數據
debug - 獲取調試信息
help - 查看coverage幫助信息,coverage help 動作/coverage 動作 --help,查看指定動作的幫助信息。
可以通過--rcfile=FILE的方式指定命令運行時的配置文件。所有命令行的參數都可以寫到配置文件里面。
通過coverage run命令python程序,并收集信息。
coverage run test.py #效果和執行python test.py效果差不多
你也可以使用-m參數指定運行一個python文件里面的可導出的模塊,例如
coverage run -m test.test #執行test文件里的test模塊
可以通過--source,--include,--omit指定運行的python文件所在的目錄。但是一定要把這三個參數放在run后面,所運行的python文件前面。
coverage run --source=project test.py
??coverage可以處理多線程的程序,但是如果你使用 multiprocessing, greenlet, eventlet, gevent,那么coverage默認情況下就處理不了了,不過可以通過--concurrency參數,指明程序具體使用的庫,則可以處理。默認情況下,coverage也不會處理python解析器的代碼,如python自帶的標準庫os、sys等,如果你也想看這些系統庫的數據,使用-L參數。如果有一些代碼本應該被統計到,但卻沒有,那么加上--timid參數再運行一遍,這是一個比較慢的跟中算法,所以一般情況下,少用。如果你有多個進程或者機器需要運行coverage程序,可以是使用--parallel-mod將所有進程的統計數據分開。
??在運行coverage過程中,coverage會產生一些警告,這些警告會影響到統計的進程。這些警告主要包括:
“Trace function changed, measurement is likely wrong: XXX”
如果在運行的過程中,代碼發生改變,則會報這個錯誤,xxx表示是修改后的名稱。
“Module XXX has no Python source”
使用了一個不存在的python文件
“Module XXX was never imported”
運行的python文件中XXX模塊不存在
“No data was collected”
主要可能是你要運行的python文件中,一行代碼都沒有執行到
“Module XXX was previously imported, but not measured.”38762
模塊XXX在coverage運行時已經導入了,他的運行情況不會被coverage監控到。
??默認情況下,coverage生成的結果文件為.coverage,你可以通過修改環境變量COVERAGE_FILE來修改這個文件的后綴名。你也可以是用-a把多次運行的結果合并到一個文件里,否則,每次生成的結果文件都是上一次運行的結果。你可以是用coverage erase清空之前運行的結果文件。
??coverage可以把多個結果文件合并起來,首先把多個結果文件拷貝到同一個目錄,然后運行combine選項,就可以把多個文件合并到一個.coverage文件了
coverage combine
你也可以指定文件名或者目錄
coverage combine data1.dat windows_data_files/
這種情況下,coverage不會收集當前目錄下的文件,如果你需要收集當前目錄下的結果,你需要在命令行指定。
??coverage只會收集.coverage的文件,如下格式的文件會被收集。
.coverage.machine1 .coverage.20120807T212300 .coverage.last_good_run.ok
可以通過run --parallel-mode參數來控制每次運行是否參數獨立結果文件,如果指定,產生的結果文件名機器名、進程id、隨機數。例如
.coverage.Neds-MacBook-Pro.local.88335.316857 .coverage.Geometer.8044.799674
如果你在不同的機器上不同的目錄運行coverage產生的結果文件無法合并,你可以通過paths參數來指明他們間的區別。具體可以通過paths來配置。如果合并時,結果文件不可讀,coverage會輸出一個警告。
??提供四種風格的輸出文件格式。分別對應html,xml命令。他們的命令行參數是一致的。如果你想收集一系列文件中的某些文件的結果,你可以指定具體的文件名和模塊名。--include --omit參數可以使用正則來指定要收集的文件。指定-i --ignore-error參賽忽略那些找不到文件的錯誤。--fail-under可以指定一個數字,當coverage的結果小于這個數字,coverage命令返回一個錯誤碼2,但這個參數對annotate命令無效。
??最簡單的報告是report命令輸出的概要信息,report包括執行的行數,沒有執行的行數,覆蓋百分比。
$ coverage report Name Stmts Miss Cover --------------------------------------------- my_program.py 20 4 80% my_module.py 15 2 86% my_other_module.py 56 6 89% --------------------------------------------- TOTAL 91 12 87%
-m參數可以顯示具體沒有被執行的文件行。
$ coverage report -m Name Stmts Miss Cover Missing ------------------------------------------------------- my_program.py 20 4 80% 33-35, 39 my_module.py 15 2 86% 8, 12 my_other_module.py 56 6 89% 17-23 ------------------------------------------------------- TOTAL 91 12 87%
如果你使用branch coverage,branch的結果將顯示在Branch和BrPart兩列。例如
$ coverage report -m Name Stmts Miss Branch BrPart Cover Missing --------------------------------------------------------------------- my_program.py 20 4 10 2 80% 33-35, 36->38, 39 my_module.py 15 2 3 0 86% 8, 12 my_other_module.py 56 6 5 1 89% 17-23, 40->45 --------------------------------------------------------------------- TOTAL 91 12 18 3 87%
你指定文件來查看特定文件的結果。
$ coverage report -m my_program.py my_other_module.py Name Stmts Miss Cover Missing ------------------------------------------------------- my_program.py 20 4 80% 33-35, 39 my_other_module.py 56 6 89% 17-23 ------------------------------------------------------- TOTAL 76 10 87%
--skip-covered參數可以不輸出覆蓋率100%的文件。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8714.html
摘要:運行命令通過命令程序,并收集信息。在運行過程中,會產生一些警告,這些警告會影響到統計的進程。這些警告主要包括如果在運行的過程中,代碼發生改變,則會報這個錯誤,表示是修改后的名稱。 歡迎大家光臨我的博客 簡介 coverage是一個檢測單元測試覆蓋率的工具,即檢查你的測試用例是否覆蓋到了所有的代碼。 coverage命令行工具 ??當你通過pip install coverage成功安...
摘要:介紹前身,創建出來的以下是官網對的相關特點介紹支持真實瀏覽器無瀏覽器熱更新,文件變化后自動測試測試框架無關性支持開源易測試持續集成安裝配置配置項自動監控更新如果為相對路徑,則加上作為前綴配合運行瀏覽器如果瀏覽器在指定時間 介紹 前身 Testacular, AngularJs Team 創建出來的. 以下是官網對Karma的相關特點介紹 支持真實瀏覽器, 無瀏覽器PhantomJS ...
摘要:前端日報精選浮點數精度之謎前端面試必備基本排序算法從賀老微博引出的遍歷器加速那些奧秘進階之深入理解數據雙向綁定全棧天中文深入理解筆記用模塊封裝代碼前端架構經驗分享周二放送自制知乎專欄譯在大型應用中使用的五個技巧掘金開發指南眾成 2017-08-02 前端日報 精選 JavaScript 浮點數精度之謎前端面試必備——基本排序算法從賀老微博引出的遍歷器(Iterators)加速那些奧秘J...
摘要:為什么要寫單元測試減少提高代碼質量,保證你的代碼是可測試的放心重構當你每個方法都寫了單元測試的時候,你每一個改動都會影響相應的單元測試,這樣你不用費盡心思的考慮哪里會有影響,特別是復雜項目或非核心功能不易被測試到,從而導致的產生。 為什么要寫單元測試 減少bug 提高代碼質量,保證你的代碼是可測試的 放心重構 當你每個方法都寫了單元測試的時候,你每一個改動都會影響相應的單元測試,這...
摘要:已獲原作者授權原系列地址簡介一提到這個詞很多人首先想到的是餐館里的菜單雖然餐館菜單和計算機程序中的菜單看起來一點也不像但他們確實有很多共同點在餐館中菜單列舉了所有菜品和飲料在計算機程序中菜單通過圖形界面展示了應用程序可用的命令和功能在用戶界 已獲原作者授權. 原系列地址: Python Tkinter 簡介 一提到menu這個詞, 很多人首先想到的是餐館里的菜單. 雖然餐館菜單和計算...
閱讀 2838·2021-11-15 11:39
閱讀 1816·2021-09-24 09:48
閱讀 1060·2021-09-22 15:36
閱讀 3581·2021-09-10 11:22
閱讀 2990·2021-09-07 09:59
閱讀 952·2021-09-03 10:28
閱讀 666·2021-09-02 15:15
閱讀 2738·2021-08-27 16:24