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

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

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

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

有人用过ExtentReport吗?还是类似的东西?

朝正确方向的任何有用的文章或指南将不胜感激。

谢谢。

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

最佳答案

它看起来应该像这样:

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)并在侦听器中使用它。

10-06 03:35