extentreports報告插件與testng集成(一)


前段時間在群里有人說了下用這個插件來生成測試報告,發現生成的報告非常不錯。就下來學習了一下,並集成到了testng上,下面來分享一下:

ExtentReports (by Anshoo Arora) is a HTML reporting library for .NET and Java which is extremely easy to use and creates beautiful execution reports. It shows test and step summary, test steps and status in a toggle view for quick analysis。(ExtentReports是一個可以非常容易用.net或者java來生成的一個漂亮的報告,用來顯示我們的測試中步驟、摘要、狀態以便用來分析)

先讓大家看下報告樣式:

是不是很漂亮,其中的還有帥選功能。以及其他的一些信息。

我的工程是maven項目,所以可以直接引入依賴,不能引入的,請自行下載,下載地址:http://extentreports.relevantcodes.com

maven工程中pom.xml加入一下依賴

        <dependency>
            <groupId>com.relevantcodes</groupId>
            <artifactId>extentreports</artifactId>
            <version>2.40.2</version>
        </dependency>

 

首先在testng @beforesuits中初始化一些ExtentReports,其中配置了報告的生成路徑,以及一些其他一些信息,這里為了在監聽中調用extent 我在這里寫了一個get方法

private static String reportLocation = "report/ExtentReport.html";
protected static ExtentReports extent;
@BeforeSuite
    public static void befores(){
extent = new ExtentReports(reportLocation, true);
extent.startReporter(ReporterType.DB, reportLocation);
extent.addSystemInfo("Host Name", "Lining");
}

@AfterSuite
public static void afters(){
        
    extent.close();

}
public static ExtentReports getextent(){
        return extent;
    }

重寫testng監聽:

import org.apache.log4j.Logger;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import seleniumstudy.testcase.InitDriverCase;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

public class TestngListener extends TestListenerAdapter {
    private Logger logger = Logger.getLogger(TestngListener.class);
    protected ExtentReports extent;
    protected ExtentTest test;

    @Override
    public void onTestStart(ITestResult tr) {
        super.onTestStart(tr);
        logger.info("【" + tr.getName() + " Start】");
        extent=InitDriverCase.getextent();
        test= extent.startTest(tr.getName());
    }

    @Override
    public void onTestFailure(ITestResult tr) {
        super.onTestFailure(tr);
        logger.info("【" + tr.getName() + " Failure】");
        test.log(LogStatus.FAIL, tr.getThrowable());
        extent.endTest(test);
        
    }
    

    @Override
    public void onTestSkipped(ITestResult tr) {
        super.onTestSkipped(tr);
        logger.info("【" + tr.getName() + " Skipped】");
        test.log(LogStatus.SKIP, "SKIP");
        extent.endTest(test);
    }

    @Override
    public void onTestSuccess(ITestResult tr) {
        super.onTestSuccess(tr);
        logger.info("【" + tr.getName() + " Success】");
        test.log(LogStatus.PASS, "Pass");
        extent.endTest(test);
    }

    @Override
    public void onFinish(ITestContext testContext) {
        super.onFinish(testContext);
    }
}

ok,已經完畢,我們的測試用例,還按以前的testng方式書寫就可以了,testng 的失敗重跑以及失敗自動截圖在下一篇文章中實現。

extentreports 官方文檔地址:http://extentreports.relevantcodes.com/java/#reviews


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM