TestNG将重试的方法报告为单独的测试运行

时间:2018-05-16 08:13:25

标签: testing selenium-webdriver testng test-reporting

几天前我第一次开始使用TESTNG。

我使用IRetryAnalyzer接口实现了一个重试分析器,该接口重试失败的测试方法最多3次。

我有一个名为retryInvoker()的测试方法,该方法失败两次并且第三次成功。

TestNG报告的方式是3次单独的测试运行,其中2次失败,1次成功,实际上是正确的。 虽然我只希望将其捕获为单个测试运行,但最终成功(如果它在最大允许重试结束之前执行,在这种情况下为3)。或者即使它在3次重试后没有成功,我希望将其报告为单次测试运行,而不是4次单独的测试运行,所有这些都失败了。

这方面的任何线索?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用此SO answer中建议的方法,如果在失败或通过的测试中找到相同的方法,则从测试上下文中删除重复项:

@Overrride
public void onFinish(ITestContext context) {
    Iterator<ITestResult> failedTestCases = context.getFailedTests().getAllResults().iterator();
    while (failedTestCases.hasNext()) {
        System.out.println("failedTestCases");
        ITestResult failedTestCase = failedTestCases.next();
        ITestNGMethod method = failedTestCase.getMethod();
        if (context.getFailedTests().getResults(method).size() > 1) {
            System.out.println("failed test case remove as dup:" + failedTestCase.getTestClass().toString());
            failedTestCases.remove();
        } else {
            if (context.getPassedTests().getResults(method).size() > 0) {
                System.out.println(
                        "failed test case remove as pass retry:" + failedTestCase.getTestClass().toString());
                failedTestCases.remove();
            }
        }
    }
}