目前,我正在使用ExtentReport生成自动化报告。
我使用ExtentReport的方式是使用IReporter实现在测试结束时生成报告,这很棒。
但是,现在我正在考虑创建一种在执行时监视我的测试的方法,这是IReporter无法实现的。
我想使用ITestListener为实时结果创建一个单独的监听器。
有没有人在ExtentReport中使用过这个?或类似的东西?
任何有用的正确方向的文章或指南都将受到赞赏。
感谢。
编辑:基本上需要一种方法来生成ITestListener实时控制台输出到实际的HTML Reprot,在那里我可以从那里查看测试进度而不是控制台
答案 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)
并在监听器中使用它。