allure 基于已有的測試報告資料進行進一步的加工,美化等操作,相當于做了一次資料格式轉換。allure 支援多種語言的多種測試架構,比如 Java 的 jUnit4、jUnit5、TestNg 等等。
本文主要介紹如何在 Jenkins 中內建 allure 測試報表工具,在每次項目自動化測試完成後,用 allure 生成經過加工後的測試報告。我們以 java 工程的 TestNg 測試為例,處理 TestNg 生成的測試報告。
-
Jenkins 安裝 allure 插件
全局工具配置:
Jenkins 內建 allure 測試報告工具 - Jenkinsfile 添加 allure 代碼
script {
allure jdk: '', report: "target/allure-report-unit", results: [[path: "target/surefire-reports"]]
}
`target/allure-report-unit` 參數:allure 報告生成路徑;
`target/surefire-reports` 參數:測試報告原始路徑;
-
Jenkins 平台檢視 allure 報告
在 allure 成功內建到 Jenkins 後,allure 每次處理完成,在 Jenkins job 頁面都可以看到 allure 的圖示,點選圖示即可檢視報告詳細資訊:
Jenkins 內建 allure 測試報告工具 Jenkins 內建 allure 測試報告工具
遇到問題及解決方法
問題:
allure 在 Jenkins pipline 中生成報表時報目錄權限問題:java.nio.file.AccessDeniedException
原因:
jenkins k8s pod 執行 job 時預設使用者為 jenkins,但是 pipeline 中調用的容器生成的檔案的屬主是 root。
解決方法:
配置 jenkins k8s 插件模版,添加安全配置,運作使用者設定為 root
https://groups.google.com/forum/#!topic/jenkinsci-users/GR0n8ZkCJ-E
pod 配置(spec 下):
securityContext:
runAsUser: 0
fsGroup: 0
參考文檔
https://docs.qameta.io/allure/