当前位置: 首页 > 面试题库 >

在TestNG / Selenium中自动重启失败的测试用例

太叔航
2023-03-14
问题内容

我在带有TestNG的Java中使用Selenium webdriver,来运行X个测试用例。

我想要的是任何测试用例一旦失败就自动重新启动(从启动或从故障点开始)。

我知道TestNG框架具有以下方法

@Override
  public void onTestFailure(ITestResult tr) {
    log("F");
  }

但是我不知道如何找出它是哪个测试用例,然后如何重新启动它。


问题答案:

我想查看其中包含实际代码的示例,并在此处找到它:
使用TestNg立即重新启动Test

观察一下,一旦发生故障,下面的测试将如何重新运行一次。

import org.testng.Assert;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.annotations.Test;

public class Retry implements IRetryAnalyzer {
    private int retryCount = 0;
    private int maxRetryCount = 1;

    public boolean retry(ITestResult result) {

        if (retryCount < maxRetryCount) {
            retryCount++;
            return true;
        }
        return false;
    }

    @Test(retryAnalyzer = Retry.class)
    public void testGenX() {
        Assert.assertEquals("james", "JamesFail"); // ListenerTest fails
    }

    @Test(retryAnalyzer = Retry.class)
    public void testGenY() {
        Assert.assertEquals("hello", "World"); // ListenerTest fails

    }
}


 类似资料:
  • 我正在使用C#Selenium进行自动测试,在最新的chromedriver更新89.0.4389.2300之后,Google chrome立即启动并崩溃。最奇怪的是,当我在本地运行它时,一切正常,但我也在使用Azure管道在服务器上运行测试。服务器给了我: OpenQA。硒。WebDriverException:未知错误:Chrome无法启动:崩溃。(未知错误:DevToolsActivePor

  • 我正在为企业环境构建Selenium自动化套件的最后阶段工作。它配置了TestNG,在Jenkins上运行。该套件主要由UI测试组成。作为这种设置的典型,测试是不稳定的,在我们的时间范围内,重新处理测试以减少对UI自动化的依赖是不可行的。 鉴于我已经在进行代码优化,我想设置一些自动重新运行失败测试的东西,以最大限度地减少手动调查失败的需要。我已经调查了几个选项,但没有一个适合我们的设置: 一个理想

  • 问题内容: 如果测试失败,我想截图。与其将所有测试方法都包裹在try / catch块中,不如将这种逻辑添加到以标记的方法中。 如何在当前测试失败的注解方法中进行检测? 问题答案: 如果带有注释的方法具有参数,则TestNG将自动注入测试结果。(来源:TestNG文档,第5.18.1节) 这应该做的工作:

  • 场景是: 1)打开浏览器。 注:我是使用Java语言的selenium webriver。

  • 安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。

  • 当我尝试执行一个新的单元测试用例时,它会显示以下错误。 注意:我没有特权设置路径,因为我已经将chrome web驱动程序放在D驱动器中。 测试在14:56开始。。。C:\Users\xxx.xxxx\PyCharm项目\Automation\venv\Scripts\python.exe“C:\Users\xx.xxx\AppData\Local\JetBrains\PyCharm社区版2019