TestNg使用dependsOnMethods并且优先级违反优先级

时间:2014-11-24 10:50:13

标签: java selenium-webdriver testng

我在这里看到过类似的问题,但似乎都没有解决问题。 我有以下代码;

   @Test(priority=2)
    public void increaseQty(){
       System.out.println("in increase qty");}

   @Test(priority=2,dependsOnMethods={"increaseQty"})
      public void decreaseQty(){
         System.out.println("in decrease qty");}

   @Test(priority=3)
     public void removeFromCart() throws Exception{
          System.out.println("remove qty");}

    @Test(priority=3,dependsOnMethods={"removeFromCart"})
       public void emptyCart() throws InterruptedException{
             System.out.println("empty Cart");}

预期的运行顺序是

increaseQty
decreaseQty
removeFromCart
emptyCart

但实际顺序是

increaseQty
removeFromcart
decreaseQty
emptyCart

我无法理解为什么它不遵循指定的顺序。 在我看来,它首先是运行独立方法,然后是依赖,而不管优先级如何,但在文档中的任何地方都没有提到这种行为。我该怎么做才能让它以所需的顺序运行

1 个答案:

答案 0 :(得分:4)

不提供优先级并依赖于一起,您可以对测试进行分组。 你可以这样做:

@Test(priority = 1, groups = { "qty" })
    public void increaseQty() {
    System.out.println("in increase qty");
    }

    @Test(dependsOnMethods = { "increaseQty" }, groups = { "qty" })
    public void decreaseQty() {
    System.out.println("in decrease qty");
    }

    @Test(dependsOnGroups = { "qty" })
    public void removeFromCart() throws Exception {
    System.out.println("remove qty");
    }

    @Test(dependsOnMethods = { "removeFromCart" })
    public void emptyCart() throws InterruptedException {
    System.out.println("empty Cart");
    }

修改 另一个解决方法是将你的testng xml更改为具有以下内容的解释:

<methods> <include name="increaseQty"/> <include name="decreaseQty"/> <include name="removeFromCart"/> <include name="emptyCart"/> </methods>

所以testng只会以这种方式执行它。