如何根据故障类型对 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 侦听器的一般信息以及上面列出的所有侦听器注入方法。
我正在尝试根据导致错误的 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 侦听器的一般信息以及上面列出的所有侦听器注入方法。