Selenium/Java 如何產生美觀的測試結果報告
這篇文章主要說明如何產生一個美觀又專業的測試結果報告。
Selenium/Java 的網站自動化測試如果是使用 TestNG,
TestNG 內建測試結果報告,有沒有其他工具可以讓測試結果報告更”美觀”呢?
這個工具的主角就是 ExtentReports。這個工具相當於 ExtentReports = Log4J + TestNG Testing Reports + Pie/Table Charts
TestNG report
在介紹ExtentReports之前,我們先看看 testNG report.
TestNG會在執行後,自動產生 test-output 目錄,index.html就會看到測試結果報告,如下圖所示:
ExtentReports
接著我們要介紹的是 extentReports,可參考下列網址連結。
Version 2.0+. View sample
http://relevantcodes.com/extentreports-for-selenium/
http://extentreports.relevantcodes.com/
下載 ExtentReports JAR 檔: http://relevantcodes.com/wp-content/plugins/download-monitor/download.php?id=17
測試情境
接著我們用 google 頁面為例子,測試情境如下
- 1. 啟動 FireFox瀏覽器
- 2. 瀏覽 Google.com
- 3. 驗證Window title 是否含有 Google
ExtentReoprt 使用說明
宣告 ExtentReports
- private static ExtentReports extent;
- ExtentTest mylogger;
設定 ExtentReports環境變數
- extent = new ExtentReports(“d:\\extentReport\\ExtentReoprt3.html”, true);
extent.config().reportName(“Selenium Web testing”);
extent.config().reportHeadline(“Google Page verification”);extent.addSystemInfo(“Selenium Version”, “2.46”);
extent.addSystemInfo(“Environment”, “Prod”);
收集log 資訊
- mylogger = extent.startTest(“Verify google Title”,”This is description”);
- mylogger.log(LogStatus.INFO, “launch FireFox”);
- mylogger.log(LogStatus.PASS, “The result is right.”);
將圖檔畫面加入到測試報告中
- mylogger.log(LogStatus.INFO, “Screencast below: ” + mylogger.addScreenCapture(“D:\\extentReport\\GoogleHomePage.png”));
結束收集資訊
- extent.endTest(mylogger);
- extent.flush();
程式範例
[pastacode lang=”java” message=”” highlight=”” provider=”manual”]
package mySelenium;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;
import com.relevantcodes.extentreports.ExtentReports;
public class ExtentReoprtsSample {
private static ExtentReports extent;
WebDriver driver = new FirefoxDriver();
ExtentTest mylogger;
@BeforeClass
public void setUP(){
extent = new ExtentReports("d:\\extentReport\\ExtentReoprt3.html", true);
extent.config().reportName("Selenium Web testing");
extent.config().reportHeadline("Google Page verification");
extent.addSystemInfo("Selenium Version", "2.46");
extent.addSystemInfo("Environment", "Prod");
mylogger = extent.startTest("Verify google Title","This is description");
}
@AfterClass
public void tearDown(){
driver.quit();
extent.endTest(mylogger);
extent.flush();
}
@Test
public void verifyTitle(){
mylogger.log(LogStatus.INFO, "launch FireFox");
driver.manage().window().maximize();
mylogger.log(LogStatus.INFO, "visit google Browser");
driver.get("http://www.google.com/");
mylogger.log(LogStatus.INFO, "get google title");
String title = driver.getTitle();
mylogger.log(LogStatus.INFO, "verify if the title contains Google");
try{
Assert.assertTrue(title.contains("Google"));
mylogger.log(LogStatus.PASS, "The result is right.");
}catch(AssertionError e)
{
mylogger.log(LogStatus.FAIL, "The result is wrong.");
}finally{
mylogger.log(LogStatus.INFO, "Screencast below: " + mylogger.addScreenCapture("D:\\extentReport\\GoogleHomePage.png"));
}
}
}
[/pastacode]