jenkins實現接口自動化持續集成(python+pytest+ Allure+git)

本文首發於:行者AIhtml

在用python作自動化測試時,咱們寫好代碼,而後須要執行才能獲得測試報告,這時咱們能夠經過 Jenkins 來進一步完成自動化工做。藉助Jenkins,咱們能夠結合 Git/SVN 自動拉取代碼,經過設置定時構建實現自動觸發腳本執行,獲得測試報告,最後還能夠配置發送郵件等。今天咱們就來分享下,如何結合 Git自動拉取代碼,經過構建來自動執行python腳本輸出測試報告。java

Jenkins是開源的,使用Java編寫的持續集成工具。須要安裝JDK,若是已經安裝了JDK能夠跳過該步驟。python

1. 安裝JDK

去官網下載JDK:https://www.oracle.com/java/technologies/javase-jdk15-downloads.htmllinux

將下載好的壓縮包放在Linux上git

而後解壓Java到相應目錄:web

輸入命令:tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz /home/java shell

若是提示沒有tar命令,輸入yum install -y tar ,先安裝tarjson

編輯環境變量,在/etc/profile文件中添加環境變量:vim

輸入命令:vim /etc/profile 瀏覽器

在文件最後添加內容以下,而後保存:

JAVA_HOME=/home/java/jdk-11.0.8
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH

輸入命令source /etc/profile ,刷新環境變量配置文件使其馬上生效

到此,JDK已經安裝完成。輸入java -version 查看是否安裝成功,出現以下圖即安裝成功。

PS:建議建一個Java的超連接。創建以後默認狀況下從/usr/bin/java路徑使用Java,yum安裝的時候,這個連接會自動建立。

輸入命令ln -s /home/java/jdk-11.0.8/bin/java /usr/bin/java

2. 安裝Jenkins

官網:https://www.jenkins.io/download/ 選擇對應的操做系統或者使用yum方式安裝,這裏我使用的是yum,由於比較方便:

yum的repos中默認是沒有Jenkins的,因此咱們須要先將Jenkins存儲庫添加到yum repos中。

點擊官網中【CentOS/Fedora/Red Hat】系統,而後將命令複製粘貼到Linux系統中。

以後就能夠看到系統開始自動下載安裝。若出現提示是否下載輸入:y並按回車。耐心等待安裝完成。

啓動Jenkins,命令:service jenkins start ,出現ok表示Jenkins啓動成功。

在瀏覽器輸入ip:8080進入Jenkins登陸頁面,輸入密碼。至此,Jenkins安裝完成。

3. Job配置

新建一個自由風格的項目

進入工程配置頁面,在源碼管理下,選擇Git:

若是源碼管理中沒有Git,說明你沒有安裝Git插件。點擊【Manage Jenkins】,選擇【Manage Plugins】,選擇【可選插件】,在【搜索框】中輸入git plugin,下載該插件。

安裝成功如圖所示,而後重啓【Jenkins】:

構建執行shell,根據本身的腳本輸入pytest命令。也就是說Jenkins將Git倉庫代碼下載以後,咱們要怎麼經過命令去執行腳本,這個根據本身執行腳本的狀況填寫便可,這裏和咱們手工執行腳本的操做是一致的,而後點擊保存。

點擊【Build Now[當即構建]】,能夠看到正在執行的構建Job

4. 測試報告

當用例執行完成以後,咱們想看用例執行的狀況,而pytest不只支持pytest-html插件,還可使用allure生成更加美觀的測試報告。Allure框架是一個靈活的輕量級多語言測試報告工具,它不只以web的方式展現了簡介的測試結果,並且容許參與開發過程的每一個人從平常執行的測試中最大限度的提取有用信息。因此咱們這裏選擇的是Allure框架。

從dev/qa的角度來看,Allure報告簡化了常見缺陷的統計:失敗的測試能夠分爲bug和被中斷的測試,還能夠配置日誌、步驟、fixture、附件、計時、執行歷史以及與TMS和BUG管理系統集成,因此,經過以上配置,全部負責的開發人員和測試人員能夠儘量的掌握測試信息。

從管理者的角度來看,Allure提供了一個清晰的「大圖」,其中包括已覆蓋的特性、缺陷彙集的位置、執行時間軸的外觀以及許多其餘方便的事情。allure的模塊化和可擴展性保證了您老是可以對某些東西進行微調,使Allure更適合您,那麼今天咱們就來講說如何使報告更加詳細的顯示咱們須要的信息,以及allure與jenkins的集成。

4.1 下載Allure插件與配置Allure

點擊【Manage Jenkins】,選擇【Manage Plugins】,選擇【可選插件】,在【搜索框】中輸入Allure,下載該插件。下載成功以後重啓Jenkins。

進入全局工具配置【Global Tool Configuration】,下拉最後一項,會看到【Allure Commandline】項,按下圖配置以後保存便可:

進入配置,點擊【構建後操做(Post-build Actions)】,選擇Allure Report

Results:輸入Path路徑,這裏的path路徑表示在項目根目錄下生成此文件夾,文件夾用來保存生成html報告以前所依賴的json,xml,txt等類型文件。

Report path:輸入保存html報告路徑。

點擊【Build Now[當即構建]】,執行結束以後能夠看到生成的Allure報告

4.2 Allure報告展現

5. 發送郵件

Jenkins默認提供了一個郵件通知E-mail Notification,但功能有不少的侷限性,不夠靈活。好比:沒法定義郵件的格式、郵件通知沒法提供詳細的郵件內容。在這裏咱們使用Email Extension Plugin插件。該插件可以容許你自定義郵件發送的具體內容、郵件格式等。

5.1 下載Email插件與配置Email

點擊【Manage Jenkins】,選擇【Manage Plugins】,選擇【可選插件】,在【搜索框】中輸入Email Extension Plugin,下載該插件。下載成功以後重啓Jenkins。

進入系統設置【System Configuration】,找到【Jenkins Location】,設置Jenkins URL與發件人的郵件地址

找到「Extended E-mail Notification」,設置如下內容:

詳細參數介紹:

Override Global Settings:若是不選,該插件將使用默認的E-mail Notification通知選項。反之,能夠經過指定不一樣於的設置來進行覆蓋。 
Default Content Type:指定構建後發送郵件內容的類型,有Text和HTML兩種。 
Use List-ID Email Header:爲全部的郵件設置一個List-ID的郵件信頭。 
Add 'Precedence: bulk' Email Header:設置優先級。 
Default Recipients:自定義默認電子郵件收件人列表。 
Reply To List:回覆列表。 
Emergency reroute:若是這個字段不爲空,全部的電子郵件將被單獨發送到該地址(或地址列表)。 
Excluded Committers:防止郵件被郵件系統認爲是垃圾郵件,郵件列表應該沒有擴展的帳戶名(如:@domain.com),而且使用逗號分隔。 
Default Subject:自定義郵件通知的默認主題名稱。該選項能在郵件的主題字段中替換一些參數,這樣就能夠在構建中包含指定的輸出信息。 
Maximum Attachment Size:郵件最大附件大小。 
Default Content:自定義郵件通知的默認內容主體。該選項能在郵件的內容中替換一些參數,這樣就能夠在構建中包含指定的輸出信息。 
Default Pre-send Script:默認發送前執行的腳本。 
Enable Debug Mode:啓用插件的調試模式。 
nable Security:啓用時,會禁用發送腳本的能力,直接進入Jenkins實例。若是用戶試圖訪問Jenkins管理對象實例,將拋出一個安全異常。 
Content Token Reference:郵件中可使用的變量,全部的變量都是可選的。

進入配置,點擊【構建後操做(Post-build Actions)】,找到【Extended E-mail Notification】,設置如下內容:

觸發器參數說明

Failure:即時發送構建失敗的郵件。若是」Still Failing」觸發器已配置,而上一次構建的狀態是」Failure」,那麼」Still Failing」觸發器將發送一封郵件來替代(它)。 
Unstable:即時發送構建不穩固的郵件。若是」Still Unstable」觸發器已配置,而上一次構建的狀態是」Unstable」,那麼」Still Unstable」觸發器將發送一封郵件來替代(它)。 
Still Failing:若是兩次或兩次以上連續構建的狀態爲」Failure」,發送該郵件。 
Success:若是構建的狀態爲」Successful」發送郵件。若是」Fixed」已配置,而上次構建的狀態爲「Failure」或「Unstable」,那麼」Fixed」觸發器將發送一封郵件來替代(它)。 
Fixed:當構建狀態從「Failure」或「Unstable」變爲」Successful」時發送郵件。 
Still Unstable:若是兩次或兩次以上連續構建的狀態爲」 Unstable 「,發送該郵件。 
Before Build:當構建開始時發送郵件。

點擊【Build Now[當即構建]】,執行結束以後。若是執行成功,將不會發送郵件給收件人;若是執行失敗,將會發送一封郵件給收件人,郵件內容根據本身狀況自定義。

5.2 郵件展現

6. 總結

本文主要描述了經過Git自動拉取代碼,而後Jenkins構建自動執行python腳本輸出測試報告,若是執行失敗,經過郵件自動將測試報告發送給收件人。 後期還有許多優化的地方,但願和你們一塊兒來探討。


PS:更多技術乾貨,快關注【公衆號 | xingzhe_ai】,與行者一塊兒討論吧!

相關文章
相關標籤/搜索