在用python做自動化測試時,我們寫好程式碼,然後需要執行才能得到測試報告,這時我們可以透過 Jenkins 來進一步完成自動化工作。藉助Jenkins,我們可以結合 Git/SVN 自動拉取程式碼,透過設定定時構建實現自動觸發指令碼執行,得到測試報告,最後還可以配置傳送郵件等。今天我們就來分享下,如何結合 Git自動拉取程式碼,透過構建來自動執行python指令碼輸出測試報告。
Jenkins是開源的,使用Java編寫的持續整合工具。需要安裝JDK,如果已經安裝了JDK可以跳過該步驟。
1. 安裝JDK官網下載 JDK
將下載好的壓縮包放在Linux上
然後解壓Java到相應目錄:
輸入命令:tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz /home/java
如果提示沒有tar命令,輸入yum install -y tar,先安裝tar
編輯環境變數,在/etc/profile檔案中新增環境變數:
輸入命令:vim /etc/profile
在檔案最後新增內容如下,然後儲存:
JAVA_HOME=/home/java/jdk-11.0.8JRE_HOME=$JAVA_HOME/jrePATH=$PATH:$JAVA_HOME/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport JRE_HOMEexport PATHexport 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中。
之後就可以看到系統開始自動下載安裝。若出現提示是否下載輸入:y並按回車。耐心等待安裝完成。
啟動Jenkins,命令:service jenkins start,出現ok表示Jenkins啟動成功。
在瀏覽器輸入ip:8080進入Jenkins登入頁面,輸入密碼。至此,Jenkins安裝完成。
3. Job配置新建一個自由風格的專案
進入工程配置頁面,在原始碼管理下,選擇Git:
安裝成功如圖所示,然後重啟【Jenkins】:
4. 測試報告當用例執行完成之後,我們想看用例執行的情況,而pytest不僅支援pytest-html外掛,還可以使用allure生成更加美觀的測試報告。Allure框架是一個靈活的輕量級多語言測試報告工具,它不僅以web的方式展示了簡介的測試結果,而且允許參與開發過程的每個人從日常執行的測試中最大限度的提取有用資訊。所以我們這裡選擇的是Allure框架。
從dev/qa的角度來看,Allure報告簡化了常見缺陷的統計:失敗的測試可以分為bug和被中斷的測試,還可以配置日誌、步驟、fixture、附件、計時、執行歷史以及與TMS和BUG管理系統整合,所以,透過以上配置,所有負責的開發人員和測試人員可以儘可能的掌握測試資訊。
從管理者的角度來看,Allure提供了一個清晰的“大圖”,其中包括已覆蓋的特性、缺陷聚集的位置、執行時間軸的外觀以及許多其他方便的事情。allure的模組化和可擴充套件性保證了您總是能夠對某些東西進行微調,使Allure更適合您,那麼今天我們就來說說如何使報告更加詳細的顯示我們需要的資訊,以及allure與jenkins的整合。
進入全域性工具配置【Global Tool Configuration】,下拉最後一項,會看到【Allure Commandline】項,按下圖配置之後儲存即可:
Results:輸入Path路徑,這裡的path路徑表示在專案根目錄下生成此資料夾,資料夾用來儲存生成html報告之前所依賴的json,xml,txt等型別檔案。
Report path:輸入儲存html報告路徑。
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: