如何根据故障类型对 TestNG 故障进行分类?

How to categorize TestNG failures based on type of failure?

我正在尝试根据导致错误的 exception/error 类型对 TestNG 失败进行分类。有什么办法可以做到这一点?我对 TestNG 比较陌生,所以希望能提供任何帮助

是的,您可以按照以下总体方法执行此操作。

  • 构建实现 TestNG 接口的自定义报告器实现 org.testng.IReporter
  • 在此接口实现中,您将可以访问代表测试方法结果的 ITestResult 对象,然后通过 org.testng.ITestResult#getThrowable 检查其异常,然后将您的逻辑包含到 class化失败。

这是一个实施草案

public class SampleReporter implements IReporter {
    @Override
    public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
        for (ISuite suite : suites) {
            Map<String, ISuiteResult> suiteResults = suite.getResults();
            for (ISuiteResult sr : suiteResults.values()) {
                ITestContext tc = sr.getTestContext();
                Set<ITestResult> failedResults = tc.getFailedTests().getAllResults();
                for (ITestResult failedResult : failedResults) {
                    Throwable throwable = failedResult.getThrowable();
                    if (throwable instanceof WebDriverException) {
                        //classify this as a selenium exception
                    }
                }
            }
        }
    }
}

您现在可以决定使用以下选项之一连接此侦听器

  • 在测试中使用 @Listeners 注释 class。
  • 在您的套件 xml 文件中使用 <listeners> 标签
  • 使用 ServiceLoader 方法

您可以参考我的 this 博客 post 来了解更多关于 TestNG 侦听器的一般信息以及上面列出的所有侦听器注入方法。