我在这里看到过类似的问题,但似乎没有一个能解决问题。 我有以下代码;
@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
我无法理解为什么它不遵循指定的顺序。 在我看来,无论优先级如何,它首先运行独立的方法,然后运行依赖的方法,但文档中的任何地方都没有提到这种行为。我应该怎么做才能使其按所需顺序运行
最佳答案
不要一起提供优先级和依赖,您可以对测试进行分组。 你可以这样做:
@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 只会以这种方式执行它。
关于java - 使用dependsOnMethods 和优先级的TestNg 违反了优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103047/