如何根据 TestNG 断言结果使用 Log4j 级别?

How to use Log4j level depending on TestNG Assert result?

我正在使用 TestNG,在我的每个测试结束时都有一个 Assert 验证。

Assert.assertEquals(true, mainPage.menu.isDisplayed());

如何使用 Log4j 记录此操作的结果? 如果测试失败 - Log4j 级别为错误,如果测试通过 - Log4j 级别为信息。

为此,您必须实施 testng 侦听器。 可以在这里找到信息:http://testng.org/doc/documentation-main.html#testng-listeners

在创建实现它们的 class 之后,在相关方法中,您可以将记录器设置为适当的日志记录级别。

示例:

public class TestNGListener implements ITestListener, ISuiteListener, IInvokedMethodListener {

    protected Logger logger = LogManager.getLogger(this.getClass());

    @Override
    public void onTestStart(ITestResult iTestResult) {

    }

    @Override
    public void onTestSuccess(ITestResult iTestResult) {

        logger.info("Test successfully executed.");
    }

    @Override
    public void onTestFailure(ITestResult iTestResult) {

        logger.error("Test Failed with message: " + iTestResult.getThrowable().getMessage());
    }
}

然后将侦听器附加到您的测试中class "or" 如果您有一些复杂的抽象页面结构,最好放在底部。

示例:

@Listeners(TestNGListener.class)
public abstract class AbstractTest {
}

通过以下配置,您可以接收test/sutes/etc..

特有的testng事件

祝你好运:)