假设一个测试类中有10个测试。我想按特定顺序运行它们。我可以使用优先级属性来设置测试用例的优先级。还有其他方法可以设置测试用例的优先级。
答案 0 :(得分:0)
场景:测试类具有一个或多个具有优先级的@Test方法 导入org.testng.annotations.Test;
公共类MyTests1 {
@Test(priority = 1)
public void test1() {
System.out.println("test1 from " + getClass().getSimpleName() + " class");
}
@Test(priority = 2)
public void test2() {
System.out.println("test2 from " + getClass().getSimpleName() + " class");
}
}
也可以这样工作。 @测试 公共无效Test1(){
}
@Test(dependsOnMethods = {“ Test1”}) 公共无效Test2(){
}
@Test(dependsOnMethods = {“ Test2”}) 公共无效Test3(){
}
答案 1 :(得分:0)
TestNG根据您赋予测试的优先级,使用Priority来“建议”执行顺序。这与下订单不同。
在某些测试中建立订单的严格方法是使用Test Dependencies。 如果TestA的优先级= 1,TestB的优先级= 2,但是A依赖于B,则TestNG将首先运行B,而忽略优先级,否则A将会失败。
两种做法的结合,将为您提供类似于“执行顺序”的信息。
我会纠正JeffC所说的:他是正确的说法,最好让您的测试尽可能彼此独立。但这仅在单元测试中是始终如此。
例如: 您可能有一个类似的回归套件:
@Test (priority=2)
public void validateAddingMilkToShoppingCart(){
putMilkInCart();
validateMilkIsInCart();
}
@Test (priority=1, dependsOnMethods = {"validateAddingMilkToShoppingCart"})
public void validateRemovingMilkToShoppingCart(){
verifyMilkIsInCart();
removeMilkFromCart();
validateCartIsEmpty();
}
在这种情况下,“ validateRemovingMilkToShoppingCart”可能具有更高的优先级,因为Sprint正在努力清空购物车,或者因为它最近有一个相关的错误。但是,如果您可以首先将牛奶放入购物车,则只应运行该测试,否则,您将花费时间和资源来运行基于先前的测试已经知道会失败的测试。另外,通过执行此操作,如果由于先前测试中的错误而导致无法测试该功能,您将报告显示跳过的外观更清晰。
希望这能回答您的问题。