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