ITestListener - ExtentReport

时间:2016-06-09 10:35:17

标签: java selenium automation testng

目前,我正在使用ExtentReport生成自动化报告。

我使用ExtentReport的方式是使用IReporter实现在测试结束时生成报告,这很棒。

但是,现在我正在考虑创建一种在执行时监视我的测试的方法,这是IReporter无法实现的。

我想使用ITestListener为实时结果创建一个单独的监听器。

有没有人在ExtentReport中使用过这个?或类似的东西?

任何有用的正确方向的文章或指南都将受到赞赏。

感谢。

编辑:基本上需要一种方法来生成ITestListener实时控制台输出到实际的HTML Reprot,在那里我可以从那里查看测试进度而不是控制台

1 个答案:

答案 0 :(得分:2)

它应该类似于:

import com.relevantcodes.extentreports.*;
import org.testng.ITestContext;
import org.testng.ITestResult;
import org.testng.internal.IResultListener;

import java.util.Arrays;
import java.util.Locale;

/**
 * Created by andrey.smirnov on 14.06.2016.
 */
public class ExtentListener implements IResultListener {

    private ExtentReports reporter =  new ExtentReports("build/SimpleReport.html", true, DisplayOrder.NEWEST_FIRST, NetworkMode.OFFLINE, Locale.ENGLISH);
    private ExtentTest testReporter;


    @Override
    public void onTestStart(ITestResult result) {
        testReporter = reporter.startTest(result.getMethod().getMethodName(), "Some description");
        testReporter.log(LogStatus.INFO, "Starting test " + result.getMethod().getMethodName());
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        testReporter.log(LogStatus.PASS, "Test PASSED");
        reporter.endTest(testReporter);
        reporter.flush();
    }

    @Override
    public void onFinish(ITestContext context) {
        reporter.close();
    }

   // Other interface methods
}

它将在每次测试结束时提供报告更新。有关并行运行的测试,请参阅documentation。另外,最好将ExtentReports实例作为TestNG上下文属性传递,例如iTestContext.setAttribute("reporter", reporter)并在监听器中使用它。