除了优先级属性之外,在selenium TestNG中设置测试用例优先级的其他方法有哪些

除了优先级属性之外,在selenium TestNG中设置测试用例优先级的其他方法有哪些,selenium,testng,Selenium,Testng,假设一个测试类中有10个测试。我想按特定顺序运行它们。我可以使用priority属性设置测试用例的优先级。是否有其他方法来设置测试用例的优先级。场景:测试类有一个或多个@test方法定义了优先级 导入org.testng.annotations.Test 公共类MyTests1{ @Test(priority = 1) public void test1() { System.out.println("test1 from " + getClass().getSimpleName() +

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

场景:测试类有一个或多个@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");
}
}

也是这样工作的。。。。 @试验 公共void Test1(){

}

@测试(dependsOnMethods={“Test1”}) 公共无效测试2(){

}

@测试(dependsOnMethods={“Test2”}) 公共无效测试3(){

}

TestNG使用优先级根据您给予测试的优先级“建议”执行顺序。这与设置订单不同

在某些测试中建立顺序的严格方法是使用。 如果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();
}
在这个场景中,“ValidateRemovingMilktoShippingCart”可能具有更高的优先级,因为Sprint正在清空购物车,或者因为它最近有一个相关的bug。但是你应该只运行那个测试,如果你可以把牛奶放在购物车的第一位,否则,你将花费时间和资源运行一个测试,你已经知道它会失败,基于以前的测试。另外,通过这样做,您将报告如果由于上一次测试中的错误而无法测试该功能,那么将显示跳过


希望这能回答您的问题。

您需要仔细思考为什么您需要这样做。最佳实践是不要按特定顺序运行自动化,因为它可以隐藏问题。测试不应该相互依赖,每个测试都应该隔离。