testng重试分析仪的操作

时间:2018-03-22 12:54:37

标签: selenium testng retry-logic

我正在关注几个不同的网站,解释如何使用RetryAnalyzer(他们都说基本相同的东西,但我检查了几个,看看是否有任何区别)。我像他们在样本中那样实现了,故意在第一次运行时导致失败(最终成为唯一的运行)。尽管失败了,但测试没有重复。我甚至在分析仪的第一行(res = false)放置了一个断点。从未受到打击。我告诉它尝试3次,但它根本没有重试。我错过了什么吗? 我的示例如下:是否与设置计数器= 0有关?但是“res = false”至少应该被击中?

public class RetryAnalyzer implements IRetryAnalyzer {

    int counter = 0;

    @Override
    public boolean retry(ITestResult result) {
        boolean res = false;
        if (!result.isSuccess() && counter < 3) {
            counter++;
            res = true;
        }
        return res;
    }
}

@Test(dataProvider = "dp",  retryAnalyzer = RetryAnalyzer.class)
public void testA(TestContext tContext) throws IOException {
    genericTest("A", "83701");
}

测试通常会通过。我故意导致它失败但它没有重试。我错过了什么吗?

=============================================== 默认套件

运行总测试:1,失败:1,跳过:0

2 个答案:

答案 0 :(得分:0)

尝试将alwaysRun = true添加到测试方法装饰器中。

@Test(dataProvider = "dp",  retryAnalyzer = RetryAnalyzer.class, alwaysRun = true)
public void testA(TestContext tContext) throws IOException {
    genericTest("A", "83701");
}

此外,在重试之前,您可能需要重新启动驱动程序实例,以便开始使用测试。否则,您的第二次运行将在同一浏览器实例中执行。

通过重新安装浏览器驱动程序,只需执行driver.Quit()

答案 1 :(得分:0)

RetryAnalyzer类必须是公共的。同样,如果它是一个内部类,则应该是静态的。 TestNg默默地忽略了retryAnalyzer。