1. 程式人生 > 其它 >Jenkins+Pytest+Allure

Jenkins+Pytest+Allure

環境準備

Pytest 負責 Python 程式碼測試
Allure 負責測試報告 HTML 介面展示
Jenkins 負責自動化

測試

安裝完後,可以先來使用一下
找一個使用 Pytest 的專案,直接去 github 拉取 requests 庫,它的 tests 目錄寫滿了通過 pytest 構建的測試用例。

通過 pytest 執行 requests/tests 中的程式碼並通過 --alluredir 指定生成資料的資料夾,這些資料就是 allure 可讀取的資料,通常為一堆 JSON 檔案。
獲得 JSON 檔案資料後,可以通過 allure generate 命令來生成 HTML 測試報告介面。

pytest requests/tests --alluredir=./allure-results
allure generate allure-results -o allure-report --clean

接著來安裝 Allure 在 Jenkins 中的外掛。
還需要進行配置,進入「系統設定」->「Global Tool Configuration」。

Jenkins 外掛安裝完後,在 Jenkins 中建立 Freestyle project,Description 描述可以隨便填寫,在 Build 構建處,選擇 Execute Shell

#!/bin/bash
cd /Users/ayuliao/Desktop/workspace/CICD
source venv/bin/activate
pytest requests/tests --alluredir "${WORKSPACE}/target/allure-results"
exit 0

簡單而言, --alluredir 必須為 "${WORKSPACE}/target/allure-results",因為 Jenkins 通過外掛呼叫 allure genera 命令時,傳入的路徑固定為 ${WORKSPACE}/target/allure-results。

${WORKSPACE} 是 Jenkins 內建的變數,表示「分配給構建作為工作空間的目錄的絕對路徑。」。

如果 --alluredir 為其他值,通過 Jenkins 構建專案時,會丟擲 allure-results does not exists,你可以在「https://github.com/jenkinsci/allure-plugin/issues/201」看見問題的具體細節。

此外,還需要配置 Post-build Actions 構建後的動作,這裡也非常關鍵。

選擇「Allure Report」,將 Results 與 Report Path 分別配置成 target/allure-results 與 target/allure-report,這是固定的,不要看其註釋說你可以隨意配置。

上述配置之所以是固定的,需要看 Jenkins Job 中的 console output,jenkins 呼叫 allure generate 命令是固定的。
如果將 Results 與 Report Path 配置成其他值,會出現各種問題