国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Coverage分析Python web項(xiàng)目的代碼覆蓋率

marser / 3549人閱讀

摘要:被測腳本只有正常退出或者以信號(hào)退出才能出發(fā),才能得到覆蓋率結(jié)果。如果直接或者用其他信號(hào)終止進(jìn)程,覆蓋率結(jié)果將會(huì)丟失參考文章腳本覆蓋率分析方法介紹。

關(guān)于Coverage

Coverage是Python代碼覆蓋率分析工具,有關(guān)它的介紹和安裝方法請(qǐng)見:
Python代碼覆蓋率分析工具Coverage

用Python啟動(dòng)的web服務(wù)可以方便地使用Coverage分析其覆蓋率,假設(shè)一個(gè)web服務(wù),它的啟停命令如下:

sudo python xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main.py |grep -v grep |awk "{print $2}"|sort -r| sudo xargs kill

像這樣用python啟動(dòng)的服務(wù)可以使用Coverage命令行啟動(dòng),用kill -2的關(guān)閉,即可統(tǒng)計(jì)代碼覆蓋率。

啟停命令

使用如下啟停命令:

sudo coverage run --parallel-mode --branch --include="yyy/*" xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main |grep -v grep |awk "{print $2}"|sort -r|sudo xargs kill -2

與原來的命令區(qū)別在啟動(dòng)命令用coverage run和一組參數(shù)替代python,停止命令用kill -2殺進(jìn)程

解釋一下啟動(dòng)命令參數(shù):

--parallel-mode:使Coverage監(jiān)測被測代碼子進(jìn)程的覆蓋率,如果被測代碼是多進(jìn)程的,必須使用此參數(shù);

--branch:統(tǒng)計(jì)分支代碼覆蓋率,加上這個(gè)參數(shù)可使統(tǒng)計(jì)更精確,具體區(qū)別參見文檔:http://coverage.readthedocs.org/en/latest/branch.html;

--include: 限定要統(tǒng)計(jì)代碼的路徑,如果不限定,Coverage會(huì)把請(qǐng)求涉及到的所有代碼,包括系統(tǒng)庫和Tornado框架的代碼都分析一遍,會(huì)大大拉低代碼覆蓋率;

各參數(shù)具體可參見:http://coverage.readthedocs.org/en/latest/cmd.html

停止命令,必須使用kill -2
這是因?yàn)镃overage在實(shí)現(xiàn)上使用了atexit模塊注冊一個(gè)回調(diào)函數(shù),在Python退出時(shí)將內(nèi)存中的覆蓋率結(jié)果寫到文件中。被測腳本只有正常退出或者以SIGINT 2信號(hào)退出才能出發(fā)atexit,才能得到覆蓋率結(jié)果。如果直接kill(SIGTERM 15)或者用其他信號(hào)終止進(jìn)程,覆蓋率結(jié)果將會(huì)丟失(參考文章:Python腳本覆蓋率分析方法介紹)。

CTRL+C發(fā)的即是SIGINT 2信號(hào),所以前臺(tái)啟動(dòng)的服務(wù)用CTRL+C停止后可以出結(jié)果

Coverage結(jié)果收集
服務(wù)必須以coverage run啟動(dòng),并以kill -2終止后,才出現(xiàn)統(tǒng)計(jì)結(jié)果:

xxx@xxx:/xxx/$ ll
total 2708
drwxr-xr-x 11 root root   4096 Sep 25 11:46 ./
drwxr-xr-x  6 root root   4096 Sep 25 08:30 ../
-rw-rw-rw-  1 root root 284691 Sep 25 11:46 .coverage.xxx.15845.747211
-rw-rw-rw-  1 root root 284917 Sep 25 11:45 .coverage.xxx.15846.592706
-rw-rw-rw-  1 root root 284274 Sep 25 11:45 .coverage.xxx.15847.688607
-rw-rw-rw-  1 root root 284583 Sep 25 11:45 .coverage.xxx.15858.136003
-rw-rw-rw-  1 root root 284274 Sep 25 11:46 .coverage.xxx.15867.746159
-rw-rw-rw-  1 root root 284691 Sep 25 11:46 .coverage.xxx.15876.004083
-rw-rw-rw-  1 root root 283820 Sep 25 11:46 .coverage.xxx.15886.921243

每個(gè).coverage.xxx文件代表一個(gè)子進(jìn)程的覆蓋率,文件名格式為.coverage.<機(jī)器名>.<進(jìn)程號(hào)>.<隨機(jī)數(shù)>。

測試結(jié)束后,需要合并測試結(jié)果,生成報(bào)告:

coverage combine
coverage report -m
coverage html
coverage xml
coverage erase

combine會(huì)合并7個(gè).coverage.xxx文件成1個(gè).coverage,因?yàn)樽詈驝overage統(tǒng)計(jì)的是.coverage的結(jié)果。

report/html/xml:直接在終端顯示報(bào)告/生成html報(bào)告/生成xml報(bào)告。

erase會(huì)刪除.coverage文件,保證不會(huì)影響下次統(tǒng)計(jì)的結(jié)果。

生成的報(bào)告非常清晰,html和xml可以直接點(diǎn)擊進(jìn)入代碼文件查看。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/37618.html

相關(guān)文章

  • 使用Coverage分析WSGI項(xiàng)目代碼蓋率

    摘要:由于構(gòu)造函數(shù)不支持參數(shù),必須使用配置文件。使用文件作為的配置文件一般的項(xiàng)目都是多進(jìn)程,這需要分析子進(jìn)程的覆蓋率,需要用到配置文件。這里文檔說在構(gòu)造函數(shù)里使用參數(shù)可以限制,實(shí)測,沒有用會(huì)刪除文件,保證不會(huì)影響下次統(tǒng)計(jì)的結(jié)果。 關(guān)于Coverage Coverage是Python代碼覆蓋率分析工具,有關(guān)它的介紹和安裝方法請(qǐng)見:Python代碼覆蓋率分析工具Coverage 用Python啟...

    YFan 評(píng)論0 收藏0
  • Python代碼蓋率分析工具Coverage

    摘要:簡介是一種用于統(tǒng)計(jì)代碼覆蓋率的工具,通過它我們可以檢測測試代碼的有效性,即測試對(duì)被測代碼的覆蓋率如何。支持分支覆蓋率統(tǒng)計(jì),可以生成報(bào)告。 Coverage簡介 Coverage是一種用于統(tǒng)計(jì)Python代碼覆蓋率的工具,通過它我們可以檢測測試代碼的有效性,即測試case對(duì)被測代碼的覆蓋率如何。Coverage支持分支覆蓋率統(tǒng)計(jì),可以生成HTML/XML報(bào)告。XML報(bào)告可以集成入Jenk...

    zombieda 評(píng)論0 收藏0
  • Chrome DevTools 代碼蓋率功能詳解

    摘要:本文會(huì)介紹新增的代碼覆蓋率功能如何收集數(shù)據(jù)如何基于它收集的數(shù)據(jù)來改進(jìn)應(yīng)用的性能。動(dòng)態(tài)分析是指在應(yīng)用運(yùn)行狀態(tài)下收集代碼執(zhí)行數(shù)據(jù)的過程,換句話說,覆蓋率數(shù)據(jù)就是在代碼執(zhí)行過程中通過標(biāo)記收集到的。 showImg(https://segmentfault.com/img/remote/1460000009013741); 共 1812 字,讀完需 3 分鐘。工欲善其事必先利其器,前端周刊本周...

    robin 評(píng)論0 收藏0
  • 通過demo學(xué)習(xí)OpenStack開發(fā)所需基礎(chǔ)知識(shí) -- 單元測試

    摘要:本文將進(jìn)入單元測試的部分,這也是基礎(chǔ)知識(shí)中最后一個(gè)大塊。本文將重點(diǎn)講述和中的單元測試的生態(tài)環(huán)境。另外,在中指定要運(yùn)行的單元測試用例的完整語法是。中使用模塊管理單元測試用例。每個(gè)項(xiàng)目的單元測試代碼結(jié)構(gòu)可 本文將進(jìn)入單元測試的部分,這也是基礎(chǔ)知識(shí)中最后一個(gè)大塊。本文將重點(diǎn)講述Python和OpenStack中的單元測試的生態(tài)環(huán)境。 單元測試的重要性 github上有個(gè)人畫了一些不同語言的學(xué)...

    douzifly 評(píng)論0 收藏0
  • 2021年軟件測試工具總結(jié)——單元測試工具

    摘要:單元測試框架作為的標(biāo)準(zhǔn)庫,是其他單元測試框架的基礎(chǔ)。可以和和配合使用編寫單元測試。官網(wǎng)地址單元測試覆蓋率工具單元測試中還需要用到代碼覆蓋率工具。代碼覆蓋率統(tǒng)計(jì)工具用來發(fā)現(xiàn)沒有被測試覆蓋的代碼,完善單元測試的覆蓋率。 在應(yīng)用程序中,單元是具有一個(gè)或多個(gè)輸入和單個(gè)輸出的軟件中最小可測試部分。單元...

    qingshanli1988 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<