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