用ExtentReports美化你的測試報告

前言

在實際的自動化測試工作中經(jīng)常會用到一些報告生成工具大概分為兩類,一類是測試框架自帶的報告生成工具如:JUnit+Ant、TestNG;另一類就是專用報告工具如ReportNG等。這些報告要么在UI設(shè)計上不滿足我們的需求,要么在API和擴展性上比較差。所以,我們要尋求一個既美觀大方,又支持擴展的報告插件。本文介紹的ExtentReport就是這樣一個報告插件。

當(dāng)前狀況

下面來分別看看當(dāng)前我們常用的報告

JUnit+Ant測試報告樣例:

Paste_Image.png

TestNG測試報告樣例

Paste_Image.png

ReportNG測試報告樣例

Paste_Image.png

看到上面報告的樣例是不是覺得報告頁面丑陋而且死板不夠炫啊,其實這些報告樣式不光是丑陋也使用了一些過時的css樣式并且擴展性比較差:

  • JUnit與Ant的配合生成的報告簡潔,但配置有點復(fù)雜無法立即上手。
  • TestNG的報告雖然比詳盡,但信息比較分散,定制開發(fā)的門檻比較高。
  • ReportNG目前已經(jīng)不再維護了Current Stable Version: 1.1.4

ExtentReports報告

這些報告的使用與配置方面的問題這里不再詳述,大家可以去Google相應(yīng)的文章,這里關(guān)鍵給大家推薦一個更實用的開源報告生成工具ExtentReports,其不光漂亮而且使用簡單,并可以定制相應(yīng)的樣式,先上圖看看:

Paste_Image.png
Paste_Image.png
Paste_Image.png

我們要改變

ExtentReports的介紹

ExtentReports是由Anshoo Arora創(chuàng)造的一個基于HTML5報告,它提供了Java與.NET類庫,非常容易使用和創(chuàng)建出漂亮的自動化測試報告。既可以顯示測試測試的Summary與步驟詳細信息(狀態(tài)、錯誤等)也提供分析Dashbord,這些頁面使用Tab標(biāo)簽鏈接進行分離方便快速切換查看等優(yōu)點

基本使用過程

下載與配置

當(dāng)前For Java的最新版本是2.40.2,

圖片 2.png
1. 解壓后并將extentreports-java-2.40.2.ja與lib目錄中導(dǎo)入你的自動化測試工程中,這里以Eclipse的工程為例:
Paste_Image.png
Paste_Image.png
2. 在你的測試代碼中或者需要使用報告的地方引用,按下面的步驟進行調(diào)用:
Paste_Image.png
Paste_Image.png

初始化ExtentReports

1.ExtentReports提供多個初始化接口,根據(jù)自己的需要來進行初始化,常用的如下:
ExtentReports extent = ExtentReports(String filePath, Boolean replaceExisting, NetworkMode networkMode)

Paste_Image.png

2.參數(shù)說明:
filePath:html報告文件的路徑
replaceExisting:是否覆蓋存在的文件,true:覆蓋,false,不覆蓋,新的測試信息將會追加到報告中
NetworkMode :OFFLINE---html報告是使用離線的CSS和JS, ONLINE使用報告本地目錄的中的CSS與JS,如果選擇OFFLINE,將會復(fù)制相應(yīng)的CSS與JS到%reportFolder%/extentreports目錄中,這樣就不需要在線的css與js樣式了提高速度
其他初始方法詳情請參考API文檔:
http://relevantcodes.com/Tools/ExtentReports2/javadoc/index.html

Paste_Image.png

增加測試信息到報告中

1.增加測試任務(wù)信息

Paste_Image.png
  • 說明:調(diào)用startTest方法并傳入任務(wù)的名稱并返回一個ExtentTest類的實例taskTest的,標(biāo)示測試的開始,這個名稱將會顯示 在測試報告的標(biāo)題中,
  • taskTest再調(diào)用setStartedTime方法來設(shè)置一個測試的開始時間
  • extent.flush()是將信息寫入報告文件中

2.增加測試用例信息:

Paste_Image.png

說明:調(diào)用過程與增加任務(wù)信息一樣,只是再調(diào)一次startTest與setStartedTime
對應(yīng)的報告實例如下:

Paste_Image.png
  1. 增加測試用例結(jié)果狀態(tài)信息
Paste_Image.png
  • 說明:caseTest.log(parameter1, parameter2)向報告中記錄Case結(jié)果狀態(tài),如果是Pass調(diào)用,參數(shù)parameter1傳入LogStatus.PASS,如果為Fail parameter1傳入LogStatus. parameter2用于在狀態(tài)欄顯示什么樣的信息(如顯示 通過、passed等);
  • 同樣調(diào)用調(diào)用setEndedTime方法來設(shè)置一個測試的結(jié)束時間
  • 測試用例的運行時長會在報告中進行自動計算。
  • taskTest.appendChild(caseTest);是將此Case的測試結(jié)果關(guān)聯(lián)到前面的測試任務(wù)上。效果如下圖:
Paste_Image.png
  • 如果重復(fù)此步驟還可以向下再添加一級的如測試步驟的結(jié)果狀態(tài),如下:
Paste_Image.png

4.增加測試任務(wù)結(jié)果信息

Paste_Image.png
  • 說明:測試任務(wù)結(jié)束后調(diào)用setEndedTime與endTest標(biāo)志測試任務(wù)的結(jié)束
  • 調(diào)用close方法關(guān)閉測試報告文件的讀寫。
  • 測試任務(wù)的運行時長會在報告中進行自動計算
Paste_Image.png
  1. 增加屏幕截圖到測試用例的報告中:
Paste_Image.png

說明:
仍然使用ExtentTest實例caseTest調(diào)用log(parameter1, parameter2)方法傳入兩個參數(shù)
LogStatus.INFO表示要增加一條信息,信息內(nèi)容為parameter2始caseTest.addScreenCapture(screenPath), screenPage可以使用相對路徑如:
"./Screenshots/" + snapShotFileName;

高級應(yīng)用

LogStatus.INFO樣式定制

在測試用例信息中增加制定化的Hmtl樣式如下

Paste_Image.png

log方法中可以直接傳入html字符串來定制自己想要的效果。

增加附加信息到報告中

將測試設(shè)備、測試任務(wù)、OS平臺等相關(guān)的信息到報告中

Paste_Image.png

說明,將需要的信息放入Map中,報告類初始化后的實例extent調(diào)用addSystemInfo(sysInfo);來完成想關(guān)的信息插入,效果如下圖:

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容