【问题标题】:How to run class if test case failed in testNG如果测试用例在 testNG 中失败,如何运行类
【发布时间】:2020-07-01 10:22:40
【问题描述】:

我遇到了一个问题, 我有一个包含多个测试用例的类,我正在使用带有 java 和 selenium 的测试 ng。 如果测试用例失败,是否有可能 testNG 将再次运行整个类? 不是测试。 因为页面之间有优先级和导航。 有没有办法运行再次失败的整个班级?我只是看到重新运行测试,它对我没用。 问候

【问题讨论】:

    标签: java selenium selenium-webdriver testng testng.xml


    【解决方案1】:

    如果我理解正确,这就是您需要的解决方案

    import org.testng.IRetryAnalyzer;
    import org.testng.ITestResult;
    
    public class Retry implements IRetryAnalyzer {
    
        private int count = 0;
        private static int maxTry = 3;
    
        public boolean retry(ITestResult iTestResult) {
            if (!iTestResult.isSuccess()) {
                if (count < maxTry) {
                    count++;
                    iTestResult.setStatus(ITestResult.SUCCESS);
                    return true;
                } else {
                    iTestResult.setStatus(ITestResult.FAILURE);
                }
            } else {
                iTestResult.setStatus(ITestResult.FAILURE);
            }
            return false;
        }
    }
    

    那么你所有的测试方法应该是这样的:

     @Test(retryAnalyzer=Retry.class)
    

    你应该添加BeforeSuite

      @BeforeSuite(alwaysRun = true)
        public void beforeSuite(ITestContext context) {
            for (ITestNGMethod method : context.getAllTestMethods()) {
                method.setRetryAnalyzerClass(Retry.class);
            }
        }
    

    【讨论】:

    • 对不起,这只是一次又一次地尝试测试,而不是重新开始整个班级@Norayr Sargsyan
    • Testng 不支持类级别的重试操作,我觉得这个方案可以为你所用stackoverflow.com/questions/50241880/…
    • 不是他们说要删除 @test 注释,我的场景是在课前我进入一个特定的网页,然后按优先级执行 30 次测试,因为有些测试需要在其他测试之前运行。如果例如测试 5 失败,我需要再次运行测试 1 - 5。我得到了完整的报告,确切地说是哪个测试步骤失败了
    猜你喜欢
    • 2019-10-06
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多