pytest合并allure報告解決方案

背景

在執行自動化測試的過程中,為了實現自動化的高通過率,可能會反復的重試,直至大多數甚至全部用例執行通過,以此來需要人為分析的用例量,減少人力投入,提高執行效率;
在用例少或者資源消耗小,用例執行快速高效的情況下,可以每次都執行全量用例,但是一旦用例數達到一定量級,全量重試就不再適用,重試失敗用例或者指定用例才能滿足需求。

在前面的文章中 pytest構造測試緩存執行指定用例 提到構造測試緩存執行指定用例,或者將使用上次測試任務歸檔的緩存重試失敗的用例,使用緩存測試的方法可以執行指定用例,大大提高執行效率。
但是反復的重試,有帶來的新的問題,報告有多份,第一份報告包含全部用例數據,通過率可能又不甚理想,后續報告通過率上去了,但缺失了大部分的測試用例,可能無法全面反映測試狀況。

測試任務輸入描述輸出
任務A無緩存,全量測試緩存A,報告A
任務B使用緩存A重試緩存B,報告B
任務C使用緩存B重試緩存C,報告C
任務D使用緩存C重試緩存D,報告D

基于上述種種問題,實踐中,理想自動化測試的理想狀態是:使用緩存重試失敗用例,每次報告都包含全部的測試用例數據,在每份報告的用例總數不變的情況下,用例的整體通過率能夠逐漸提高
本文將提供解決方案,在實踐中可以有效地提升自動化測試報告的質量與效率,確保在反復重試過程中,無論是報告的完整性還是數據呈現都得到合理保障

測試前置改造

前置中增加兩個變量pytest_cacheallure_result用于傳遞緩存與allure結果文件壓縮包下載地址,通過判斷是否有對應參數值進行下載解壓到工作目錄,參考示例腳本:

  • pytest_cache:緩存下載地址
  • allure_result:allure結果文件下載地址
# /bin/bash
# 變量參數(觸發測試任務時傳遞)
export pytest_cache=http://10.132.1.127:8123/PytestTask/1000_pytest_cache.tar.gz 
export allure_result=http://10.132.1.127:8123/PytestTask/1000_allure-results.tar.gz # 判斷是否有指定緩存,如果有就下載緩存,用例重試失敗用例
if [ -n "$pytest_cache" ]; thencd ${WORKSPACE};wget ${pytest_cache} -O ./pytest_cache_old.tar.gz;tar -zxf ./pytest_cache_old.tar.gz;
fi# 判斷是否有指定報告數據,如果有就下載,用于后續合并
if [ -n "$allure_result" ]; thencd ${WORKSPACE};wget ${allure_result} -O ./allure_result_old.tar.gz;tar -zxf ./allure_result_old.tar.gz;
fi

pytest測試命令

pytest測試命令必須指定參數:--last-failed --last-failed-no-failures all --alluredir ./allure-results 其中--alluredir 參數指定的值必須為/allure-results 因為后文會對其進行打包歸檔

  • –last-failed
    功能:此選項指示 pytest 僅運行上次測試運行中失敗的測試用例。如果上次運行中有測試未通過,這個選項會讓你專注于解決這些具體的失敗用例,而不是每次都運行所有測試。
    應用場景:在調試時,如果你發現某些測試失敗,這個選項允許你快速重試并關注那些失敗的測試,而不必進行全面的測試。
  • –last-failed-no-failures all
    功能:此選項用于擴展 --last-failed 的功能。如果在上次測試中沒有任何失敗的測試用例,則會運行所有測試。
    應用場景:這確保了即使在上一次運行中沒有失敗,你也能執行整個測試套件,確保代碼的完整性和正確性。
  • –alluredir ./allure-results
    功能:此選項指定了用于存儲測試報告結果的目錄,它用于與 Allure 報告工具兼容。執行測試后,pytest 會將測試結果(成功和失敗)以 Allure 支持的格式存儲到你指定的目錄(在這里是 ./allure-results)。
    應用場景:這樣做可以生成可視化的測試報告,便于后期查看和分析測試結果。運行完成后,可以使用 Allure 命令生成和查看測試報告,幫助更好地理解測試情況。

完整的pytest測試命令例如:pytest -v -s -l ${test_dir} -m "${mark}" --last-failed --last-failed-no-failures all -n ${concurrency} --reruns ${reruns} --timeout 7200 --show-capture=stderr --dist=worksteal --durations=30 --alluredir ./allure-results

測試后置改造

改造測試后置,主要是生成測試報告,并且將測試生成的一些文件進行打包上傳歸檔,便于后續使用(這里的文件服務是一個單獨的web服務)

# /bin/bash
# 參數變量
# 文件服務地址,用于緩存文件
export file_server=10.132.1.127:8123
# 文件服務地址上存放的目錄
export save_dir=PytestTask
# 測試任務編號(正常應該是讀取環境變量)
export task_num=1001# 生成報告
allure generate -c -o allure-report ./allure-results# 聲明報告類型數組
report_types=("allure-report" "allure-results" "pytest_cache")# 打包文件
for report_type in "${report_types[@]}"; dotar_name="${task_num}_${report_type}.tar.gz"if [[ "$report_type" == "pytest_cache" ]]; thentar -zcf ${tar_name} ./.pytest_cacheelsetar -zcf ${tar_name} ./${report_type}fi
done# 上傳文件
for report_type in "${report_types[@]}"; dofile_address="./${task_num}_${report_type}.tar.gz"curl -X POST "http://${file_server}/files/${save_dir}" -F "file=@$file_address" || echo -e "\033[31m ${file_server}服務異常,報告上傳失敗 \033[0m"
done# 輸出下載地址
echo -e "\e[31m 歸檔文件下載地址: http://${file_server}/${save_dir}/${task_num}_allure-results.tar.gz \e[0m"
echo -e "\e[31m 歸檔報告下載地址: http://${file_server}/${save_dir}/${task_num}_allure-report.tar.gz \e[0m"
echo -e "\e[31m 歸檔緩存下載地址: http://${file_server}/${save_dir}/${task_num}_pytest_cache.tar.gz \e[0m"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87958.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pr插件圖文安裝教程

Pr插件圖文安裝教程 Adobe Premiere Pro,簡稱Pr,是由Adobe公司開發的一款視頻編輯軟件。Adobe Premiere有較好的兼容性,且可以與Adobe公司推出的其他軟件相互協作。這款軟件廣泛應用于廣告制作和電視節目制作中,是視頻編輯愛好者…

[netty5: HttpObjectEncoder HttpObjectDecoder]-源碼解析

在閱讀該篇文章之前,推薦先閱讀以下內容: [netty5: HttpObject]-源碼解析[netty5: MessageToMessageCodec & MessageToMessageEncoder & MessageToMessageDecoder]-源碼分析[netty5: ByteToMessageCodec & MessageToByteEncoder & Byte…

uniapp的navigator跳轉功能

接下來&#xff0c;我將圍繞一個常見的電商小程序來構建一系列連貫的使用場景。在這個過程中&#xff0c;我們將把 <navigator> 組件的所有關鍵屬性和方法都串聯起來&#xff0c;并詳細解釋它們在每個環節所扮演的角色和作用。 核心場景&#xff1a;構建一個電商小程序的…

v-for的用法及案例

目錄 一.v-for的用法 1.舉例1 2.舉例2 二.購物車案例 1.代碼 2.存在的問題&#xff1a;復選框錯位 3.解決方案&#xff1a; 賦值給key屬性一個唯一的值 一.v-for的用法 1.舉例1 <template><view><view v-for"(item,index) in 10" :key"…

BigQuery對象引用(ObjectRef)全面指南:一站式整合結構化與非結構化多模態數據分析

引言 企業需要同時管理有組織表格中的結構化數據&#xff0c;以及日益增長的非結構化數據&#xff08;如圖片、音頻和文檔&#xff09;。傳統上&#xff0c;聯合分析這些多樣化數據類型非常復雜&#xff0c;通常需要使用不同的工具。非結構化媒體通常需要導出到專門的服務進行…

【開源品鑒】FRP源碼閱讀

frp 是一款高性能的反向代理應用&#xff0c;專注于內網穿透&#xff0c;支持多種協議和 P2P 通信功能&#xff0c;目前在 GitHub 上已有 80k 的 star。本文將深入探討其源碼&#xff0c;揭示其背后的實現原理。1. 前言 frp 是一款高性能的反向代理應用&#xff0c;專注于內網…

day048-系統負載高排查流程與前后端分離項目

文章目錄 0. 老男孩思想1. 系統負載高排查流程1.1 進程/線程相關命令1.1.1 jps1.1.2 jstack1.1.3 jmap1.1.4 top -Hp pid 1.2 排查流程圖 2. 前后端分離項目2.1 項目說明2.2 負載均衡2.3 數據庫配置2.3.1 安裝數據庫服務2.3.2 配置數據庫環境 2.4 后端配置2.5 四層負載均衡配置…

Spring Boot 牽手EasyExcel:解鎖高效數據處理姿勢

引言 在日常的 Java 開發中&#xff0c;處理 Excel 文件是一個極為常見的需求。無論是數據的導入導出&#xff0c;還是報表的生成&#xff0c;Excel 都扮演著重要的角色。例如&#xff0c;在企業的財務管理系統中&#xff0c;需要將每月的財務數據導出為 Excel 報表&#xff0…

【ARM AMBA AXI 入門 21 -- AXI partial 訪問和 narrow 訪問的區別】

文章目錄 Overview一、定義區別二、AXI 信號層面對比三、舉例說明示例一:Partial Access示例二:Narrow Access四、硬件/系統處理角度五、AXI 總線接口信號舉例對比Partial Write 事務:Narrow Write 事務(32-bit Master on 64-bit Bus):六、總結對比表七,軟件判斷判斷 Pa…

使用Ideal創建一個spring boot的helloWorld項目

說明&#xff1a;本篇將介紹如何使用Ideal2024.2.1去創建一個spring boot的helloWorld項目&#xff0c;本篇將包含創建的詳細步驟以及spring boot項目的目錄結構說明&#xff0c;創建過程中的選項說明等。詳細步驟如下&#xff1a;第一步&#xff1a;點擊文件——新建——項目&…

國內Ubuntu訪問不了github等外網

各位小伙伴們&#xff0c;大家好呀。 大家是不是經常遇到訪問不了外網的情況呀。 在Ubuntu中可以這樣做。 訪問這個網站網站測速-Ping檢測-Trace查詢-Dig查詢-路由跟蹤查詢-tools.ipip.net&#xff0c; 對于github.com&#xff0c;在這個網站輸入github.com&#xff0c;會返…

PDF轉換工具,即開即用

在辦公室里&#xff0c;這句話被反復驗證。每天面對成堆的Word和Excel文件&#xff0c;將它們轉換成PDF格式是常有的事。可之前用過的工具&#xff0c;不是一次只能轉一個&#xff0c;就是操作繁瑣得讓人頭疼。記得有次趕項目&#xff0c;需要把二十多個文檔轉成PDF&#xff0c…

2. 你可以說一下 http 版本的發展過程嗎

你可以說一下 http 版本的發展過程嗎 總結&#xff1a;0.9&#xff1a;只能發送 get&#xff0c;無狀態。1.0&#xff1a;新增 post&#xff0c;請求頭&#xff0c;狀態碼&#xff0c;cookie。1.1&#xff1a;新增 put/delete/options/patch&#xff0c;keep-alive&#xff0c…

04-Linux驅動模塊的自動加載

概述 上一節&#xff0c;我們講述了Linux驅動開發的基本的模塊代碼編寫和手動執行模塊加載的操作&#xff0c; 這一節&#xff0c;我們講述嵌入式設備上使用Sysvint引導方式下如何開機自動加載模塊的步驟。感興趣的同學看下使用systemd引導方式的開啟自動加載模塊的步驟 操作…

【牛客算法】游游的整數切割

文章目錄 一、題目介紹1.1 題目鏈接1.2 題目描述1.3 輸入描述1.4 輸出描述1.5 示例二、解題思路2.1 核心算法設計2.2 性能優化關鍵2.3 算法流程圖三、解法實現3.1 解法一:基礎遍歷法3.1.1 初級版本分析3.2 解法二:奇偶預統計法(推薦)3.2.1 優化版本分析四、總結與拓展4.1 關…

筆記本電腦忽亮忽暗問題

關于筆記本電腦忽亮忽暗的問題這個問題困擾了我大半年&#xff0c;最后忽然找到解決方法了---主要的話有三種可能性1.關閉顯示器自動調亮的功能2.關閉節能模式自動調亮功能3.調整顯卡的功率&#xff0c;關閉自動調亮功能一開始一直都是嘗試的第一種方法&#xff0c;沒解決。。。…

Qt的頂部工具欄在多個界面使用

Qt的工具欄在多個界面使用1、前言2、創建一個工具欄類2.1 新建一個工具欄類3、提升工具欄類3.1登錄界面添加工具欄3.2 創建工具欄對象4、總結1、前言 今天遇到了個問題&#xff0c;頂部的工具欄&#xff0c;像軟鍵盤&#xff0c;時間顯示和退出按鈕那些&#xff0c;想在多個界…

C#和SQL Server連接常用通訊方式

C#和SQL Server連接通訊 在 C# 中與 SQL Server 建立數據庫連接&#xff0c;主要通過 ADO.NET 技術實現。以下是幾種常見的連接方式及相關實踐&#xff1a; ADO.NET 全面指南&#xff1a;C# 數據庫訪問核心技術 ADO.NET 是 .NET Framework 中用于數據訪問的核心組件&#xf…

安卓10.0系統修改定制化____實現自動開啟 USB 調試?的步驟解析 列舉常用的幾種修改方法

對于安卓開發者、測試人員,甚至是喜歡折騰手機的數碼愛好者來說,USB 調試是一個非常重要的功能。它能讓手機與電腦相連,實現應用安裝、系統調試、數據傳輸等操作。但每次連接手機都要手動去設置里開啟 USB 調試,實在麻煩。其實,通過修改安卓 10.0 的 ROM,就能讓手機自動開…

Redisson詳細教程 - 從入門到精通

目錄 1. 什么是Redisson 2. 為什么要用Redisson 3. 環境準備和配置 4. 基礎使用方法 5. 分布式數據結構 6. 分布式鎖詳解 7. 分布式服務 8. 實際應用場景 9. 最佳實踐 10. 常見問題解答 總結 1. 什么是Redisson 簡單理解 想象一下,Redis就像一個超級強大的"內…