TestNG中,priority参数执行顺序的问题

testng priority参数 可以在@Test注解中指明执行顺序


使用 priority参数在一个类中,对不同的Test方法排序,例如:

@Test(priority=1)

public void f() {

}

@Test(priority=2)

public void ff() {

}

@Test(priority=3)

public void fff() {

}

用例执行顺序将按照priority 由小到大的顺序执行,即f>ff>fff;

 

而实际在使用testng.xml 进行批量执行用例时会发现,有时一个class类中有多个Test方法,却只会执行第一个方法,然后就停止不动了,也不报错浏览器也不退出,selenium就开始执行下一个用例。

经过多次排查发现,出现问题的用例都使用了@priority方法。testng如果将用例配置到一个test集中,每个用例只会执行一次priority.

 

解决方法:

1.可以使用dependsOnMethods(依赖)来代替priority参数

@Test()

public void f() {

}

@Test(dependsOnMethods={"f"})

public void ff() {

}

@Test(dependsOnMethods={"ff"})

public void fff() {

}

执行顺序依然是f>ff>fff;

2.在testng.xml中建立多个test集,将有priority标识的用例区分开来

<test name="priority1" verbose="2">

<classes>

<class name="priorityTestCase1"/>

</classes>

</test>



<test name="priority2" verbose="2">

<classes>

<class name="priorityTestCase2"/>

</classes>

</test>

这样用例执行将不受影响

3.在class类中不指明执行顺序,而在testng中配置

利用include标签指明class类中Test方法的执行顺序,如:

<test name="priority1" verbose="2" preserve-order="true">

<classes>

<class name="priorityTestCase1"/>

<methods>

    <include name="f" />

    <include name="ff" />

    <include name="ff" />

</methods>

</classes>

</test>

4.如果一个test集合中只有一个java类中有用到priority,可以将它排到最后一个执行,也就不会受到影响了


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值