除了优先级属性,还有其他方法可以设置硒TestNG中的测试用例的优先级

时间:2019-10-29 18:06:40

标签: selenium testng

假设一个测试类中有10个测试。我想按特定顺序运行它们。我可以使用优先级属性来设置测试用例的优先级。还有其他方法可以设置测试用例的优先级。

2 个答案:

答案 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正在努力清空购物车,或者因为它最近有一个相关的错误。但是,如果您可以首先将牛奶放入购物车,则只应运行该测试,否则,您将花费时间和资源来运行基于先前的测试已经知道会失败的测试。另外,通过执行此操作,如果由于先前测试中的错误而导致无法测试该功能,您将报告显示跳过的外观更清晰。

希望这能回答您的问题。