【问题标题】:Testng: Skip/Failed Rest of Tests If There is An ExceptionTestng:如果出现异常,则跳过/失败其余测试
【发布时间】:2015-08-06 11:17:29
【问题描述】:

我在 Java 上使用 Selenium 和 TestNG 编写测试。捕获到异常时如何跳过/失败测试的其余部分?

例如,如果我有 3 个测试步骤

@Test(priority = 1)
    public void login() {

    }

    @Test(priority = 2)
    public void checkLoginResult() {

    }

    @Test(priority = 3)
    public void submitImage() {

    }

如果在第一个测试“登录”时捕获到 Selenium 异常 (TimeOutException 即),我如何跳过其余的测试?

是否有一些注释或任何方法可以用于此目的?

谢谢

【问题讨论】:

    标签: java selenium testng


    【解决方案1】:

    在 TestNG 文档中查看dependsOnMethods

    http://testng.org/doc/documentation-main.html#dependencies-with-annotations

    如果将这个参数添加到第二个和第三个测试中,如果第一个测试失败,它们将不会被执行:

    @Test(priority = 1)
    public void login() {
    
    }
    
    @Test(priority = 2, dependsOnMethods = {"login"})
    public void checkLoginResult() {
    
    }
    
    @Test(priority = 3, dependsOnMethods = {"login"})
    public void submitImage() {
    
    }
    

    【讨论】:

    • priority 现在没用了,你可以删除它们
    • 并不是真的没用,因为你可以给那些方法优先排序,这取决于其他方法。所以在这种情况下,checkLoginResult() 方法将始终在submitImage() 方法之前运行。
    • 你描述的只是submitImage,它依赖于checkLoginResult。不需要混合priority和dependsOnMethods让它变得复杂。
    【解决方案2】:
    @Test(priority = 2,dependsOnMethods={"login"})
        public void checkLoginResult() {
    
        }
    
        @Test(priority = 3,dependsOnMethods={"login","checkLoginResult"})
        public void submitImage() {
    
        }
    

    这样,家属将被跳过。要使它们失败,请编写一个侦听器类,您可以在每个方法失败后检查失败的方法是否具有依赖方法,然后您可以使它们失败。可以做这样的事情。

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多