日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python页面自动化测试代码覆盖率_Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)...

發布時間:2025/3/20 python 27 豆豆

requirments

OS: Ubuntu 14.04+

Gitlab 8.1 +

Jenkins 2.19.0 +

使用Jenkins對Python項目進行自動化測試主要依賴nose(單元測試)、coverage(代碼覆蓋率、pylint(語法檢查))等工具,配合插件在Jenkins的Web界面展示測試結果。流程如下:

1.代碼改動push到Gitlab自動觸發Jenkins構建項目,執行自動化測試。

2.測試包括基本功能測試、覆蓋率分析、語法檢查等,所有的測試結果在Jenkins上展示,包括測試通過率分析(可以具體到每個用例的通過情況)、測試覆蓋率可以具體到每一行、語法檢查可以具體到每一行的錯誤細節。

3.如果測試成功,Jenkins新建一個Tag提交到Gitlab項目中,同時生成一個供下載的zip包。

4.Jenkins界面包含項目代碼行數分析。

5.在Gitlab項目的commits列表中看到可以每一次CI的結果,點擊build-id后會跳轉到Jenkins界面查看構建信息。在Jenkins中點擊相應的commit-hash會跳轉到Gitlab對應提交的diff頁面。

一、jenkins中進行nose(單元測試)、pylint(語法檢查)、coverage(代碼覆蓋率)

1、準備Gitlab側API token

在個人信息的Account界面生成Private token:

在Jenkins上添加對應API token的Credential

Credentials管理界面添加該API token:

然后在Jenkins系統設置的Gitlab部分填寫相關信息(使用剛才添加的API token,可以點擊Test Connection測試配置是否OK):

配置Gitlab的webhook

在Gitlab的對應項目上配置webhook,trigger的URL是Jenkins頁面中GitLab CI Service URL后面給出的URL,勾選Push events和Merge Request events等自己需要的條件,如果Jenkins沒有https支持,去勾選Enable SSL verification,然后點擊Add Webhook,點擊Test按鈕嘗試觸發Jenkins構建即可。

至此如果對Gitlab上的項目的master分支有修改的話,Jenkins會立即觸發構建(下圖中的第29次構建,當然也可以在Jenkins的Web管理界面手工觸發構建如第30次構建):

構建完成后構建結果會同步到Gitlab中(點擊對應的對號或者差號后再新的頁面點擊對應的build id會跳轉到Jenkins的構建信息頁面):

對于成功的構建,Jenkins會自動新建一個Tag并提交到Gitlab:

2、配置Jenkins項目

在Jenkins的自由風格的軟件項目中設置如下內容:

雖然使用的是Gitlab,但是在Github project中配置相關信息之后,可以在構建記錄中點擊commit-id直接跳轉到Gitlab的diff頁面:

上面的GitLab Repository Name主要配合Gitlab logo插件使用,先在Jenkins的系統設置中設置GitLab Account Setting(使用之前在Gitlab上生成的API token):

填寫項目在Gitlab的Project URL后,在Jenkins的項目列表中可以顯示項目在Gitlab上的圖標:

繼續配置自由項目的源碼管理部分,這里使用的Credentials是Jenkins服務器訪問Gitlab使用的私鑰信息而不是之前配置的APi token,Refspec中的信息為:

+refs/heads/*:refs/remotes/origin/* +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*

構建觸發器配置如下:

這里沒有選擇Poll SCM的方式,如果選擇這種方式的話,為了提高Jenkins的響應速度,通產會設置較短的輪詢周期比如1分鐘,這樣Jenkins上面項目過多的話對Gitlab的API訪問頻率太高。

為了將Jenkins的每次構建信息發布到Gitlab,需要在構建后的操作步驟中添加Publish build status to Gitlab Commit:

如果構建成功,Jenkins提交新建的Tag到Gitlab時,需要使用的SSH私鑰有可寫權限,然而Gitlab的deploy key是沒有寫權限的,所以要在Gitlab中添加對應公鑰到用戶信息的SSH Keys信息中使其具有寫權限,然后在Jenkins的構建后的操作步驟中添加Git Publisher:

上面配置中的Target remote name應該與源碼管理->git->Repositories中的name信息一致。

2、配置Jenkins項目構建步驟,進行測試

在構建中增加構建步驟,選擇Execute shell:

在其中填寫如下內容(其中mypackage是被測試的package的名字):

virtualenv --no-site-packages env

. env/bin/activate

pip install --quiet nosexcover

pip install --quiet pylint

nosetests --with-xcoverage --with-xunit --cover-package=mypackage --cover-erase

pylint -f parseable mypackage/ | tee pylint.out

sloccount --duplicates --details mypackage > sloccount.sc

tar --exclude *pyc -zcf mypackage.tar.gz mypackage

2.1、pylint(語法檢查)

pylint.out

pylint生成的語法檢查報告pylint.out需要配合Violations plugin插件使用,然后在構建后操作中勾選Report Violations,找到pylint的配置并填寫:

構建后在構建記錄中即可以看到具體到文件每一行的語法檢查結果:

2.2、單元測試

coverage.xml

--with-xcoverage選項會生成coverage.xml文件,安裝Cobertura Plugin后可以在構建后操作中勾選Publish Cobertura Coverage Report填寫相關信息:

構建完成后,在構建信息的Cobertura Coverage Report頁面,可以看到測試覆蓋率變化的趨勢,和具體到每個文件的覆蓋情況:

nosetests.xml

--with-xunit選項會生成nosetests.xml文件,在構建后操作中勾選Publish JUnit test result report即可顯示該部分的內容:

在構建結果的Test Result頁面可以看到測試結果(點擊進入可以看到結果詳情):

2.3、sloccount項目代碼行數分析工具

項目代碼行數分析依賴sloccount這個工具,首先在Jenkins服務器上安裝它:

# Written by: CSDN - Mars Loo的博客

sudo apt-get update

sudo apt-get install sloccount

在Jenkins的構建后的操作中添加Public SLOCCount analysis results(需要先安裝SLOCCount Plug-in插件):

然后在Jenkins的構建記錄頁面可以看到項目代碼行數的變化趨勢及各個語言的代碼行數變化:

?

Jenkins的構建后的操作步驟中添加Archive the artifacts:

?

把這個步驟放在構建后的操作步驟中的最后,然后在每次成功構建后會生成一個下載鏈接供下載包:

總結

以上是生活随笔為你收集整理的python页面自动化测试代码覆盖率_Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。