gpt4 book ai didi

java - 从断言中获取日志消息

转载 作者:行者123 更新时间:2023-11-30 10:07:39 24 4
gpt4 key购买 nike

我正在使用 Extent Report 库(版本 4)将 html 报告集成到我们的测试框架中。

为此,我编写了一个包装器,它封装了我们默认的 TestNG 记录器(用于控制台输出)和 ExtentReport 记录器(ExtentTest.log,用于收集 html 报告的数据)。我们使用 TestNg 作为我们的测试框架。

从失败的断言(软断言和硬断言)中捕获日志消息以在 html 报告中显示它时出现问题,它们只会进入控制台日志。捕获这些断言日志消息以在 html 报告中显示它们的可能解决方案是什么?

我无法扩展 Assert(或 SoftAssert)类并添加我自己的实现(通过在其中添加 ExtentTest.log 实例),因为我必须替换数十个测试中的所有断言。

public class Loggers {
private static final Loggers instance = new Loggers();
private static ExtentTest test;
private static ExtentReports extent;
private static Logger LOG;
private static final String REPORT_LOCATION = "test-output/reports.extent.html";

/**
* Returns an instance of {@link ExtentReports} object. If it doesn't exist creates a new instance and returns it
*/
public static ExtentReports getLogger() {
if ( extent == null ) {
createInstance();
}
return extent;
}

/**
* Create ExtentReport and attaches htmlReporter to it
*/
public static void createInstance() {
ExtentHtmlReporter htmlReporter = getHTMLReporter();
extent = new ExtentReports();
extent.attachReporter( htmlReporter );
}

/**
* This method creates, configures and returns an instance of ExtentHtmlReporter
*
*/
public static ExtentHtmlReporter getHTMLReporter() {
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter( REPORT_LOCATION );
return htmlReporter;
}

/**
* This method logs a message with the INFO level for both instances of TestNG Logger and ExtentTest
*/
public void info( String message ) {
LOG.info( message );
test.log( Status.INFO, message );
}

最佳答案

找到解决方案。如果有人遇到类似问题,将在此处发布。

如果您将记录器放在监听器类中,则可以将记录器放在那里并使用 ITestResult 作为参数,特别是它的方法 getThrowable(它返回运行该方法时抛出的可抛出对象)

 /**
* Triggered upon the failure of a test
*/
public void onTestFailure( ITestResult testResult ) {
LOG.fail( testResult.getThrowable() );
}

它将在报告中打印失败的断言或抛出的异常。

关于java - 从断言中获取日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com