我有第一个@Test方法。接下来的步骤将取决于第一个 @Test 方法的结果。这是示例:
@Test
public void checkErrorMessage() {
if(searching.isErrorExist()==true) {
//Go to method dealWithErrorPart1();
}else{
//Go to method continue1();
}
}
@Test (dependsOnMethods = { "checkErrorMessage" })
public void dealWithErrorPart1() {
//Do something with the Error ... First Step
}
@Test (dependsOnMethods = { "dealWithErrorPart1" })
public void dealWithErrorPart2() {
//Do something with the Error ... Second Step
}
@Test (dependsOnMethods = { "checkErrorMessage" })
public void continue1() {
//Continue doing something ... Part one
}
@Test (dependsOnMethods = { "continue1" })
public void continue2() {
//Continue doing something ... Part two
}
如果方法 checkErrorMessage()
找到 Error Message ,则应调用的下一个方法是 dealWithErrorPart1()
。之后应该运行dealWithErrorPart2()
。
如果方法 checkErrorMessage()
发现 No Error Message ,则应调用的下一个方法是 continue1()
。之后应该运行 continue2()
。
因此,checkErrorMessage()
将决定下一个代码流程。
因为我无法更改应用程序的行为,所以我需要单独处理每个行为。如果应用程序给我结果 A ,那么我的测试自动化应该执行方法 A1() 、 A2() 和 A3() 。如果应用程序给我结果 B ,那么我的测试自动化应该执行方法 B1() 、 B2() 和 B3() 。
如何在 TestNG 中实现这一目标?我尝试使用 throw new SkipException("Skipping this exception"); ,但这似乎并不能解决这种情况。谢谢。
最佳答案
据我所知,TestNG 不允许您构建这种测试方法的流畅编排。
TestNG 允许用户通过以下方式定义测试方法的执行顺序:
- 使用
优先级
(这里用户只能定义顺序,方法将始终被执行) - 使用
dependsOnMethods
/dependsOnGroups
(这里用户可以定义顺序,期望的是,当前方法所依赖的方法将被执行,如果并且仅当该方法运行完成且没有失败时)
您可能只想定义一个 TestNG 测试方法,并让该测试方法将所有应用程序行为作为条件处理,而不是期望 TestNG 为您控制此编排。
关于java - 如何根据 TestNG + Selenium WebDriver 中的运行结果选择下一个 @Test 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44646537/