admin管理员组文章数量:1624338
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,可以将它排到最后一个执行,也就不会受到影响了
版权声明:本文标题:TestNG中,priority参数执行顺序的问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728897642a1178617.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论