sle*_*ske 6 testng selenium integration-testing webdriver
我们使用TestNG和Selenium WebDriver来测试我们的Web应用程序.
现在我们的问题是我们经常有几个需要按特定顺序运行的测试,例如:
现在很明显,这些测试需要以精确的顺序运行.
与此同时,我们还有许多其他测试完全独立于上述测试列表.
所以我们希望能够以某种方式将测试放入"组"(不一定是TestNG意义上的组),然后运行它们:
第二点很重要,因为我们希望避免不同组中测试之间的依赖关系(因此可以独立使用和开发不同的测试"组").
有没有办法使用TestNG实现这一目标?
解决方案我们试过
dependsOnMethods它们按正确的顺序运行.这曾经在TestNG V5中工作,但在V6中,TestNG有时会交错来自不同类的测试(同时遵守所强加的排序dependsOnMethods).似乎没有办法告诉TestNG"始终从一个类一起运行测试".dependsOnMethods拦截器无法对使用的测试进行排序,因此我们必须停止使用它.我们可能必须创建自己的注释来指定排序,我们希望尽可能使用标准的TestNG功能.preserve-order命令测试.这看起来很有希望,但只有在单独列出每个测试方法时才有效,这似乎是多余的,难以维护.有没有更好的方法来实现这一目标?
我也对如何处理彼此构建的测试的任何其他建议持开放态度,而不必对所有测试强加总订单.
PS
alanning的回答指出,我们可以通过在每个测试中进行必要的设置来简单地保持所有测试的独立性.原则上这是一个好主意(有些测试会这样做),但有时我们需要测试一个完整的工作流程,每个步骤都取决于之前的所有步骤(如我的例子所示).使用"独立"测试来做到这一点意味着反复运行相同的多步设置,这将使我们已经慢速测试的速度更慢.而不是三个测试:
我们会得到的
除了不必要地增加测试时间之外,这也感觉不自然 - 应该可以将工作流建模为一系列测试.
如果没有别的办法,这可能就是我们要做的,但我们正在寻找更好的解决方案,而不必重复相同的设置调用.
尝试使用取决于组和取决于方法。将同一类中的所有方法添加到一组中。例如
@Test(groups={"cls1","other"})
public void cls1test1(){
}
@Test(groups={"cls1","other"}, dependsOnMethods="cls1test1", alwaysrun=true)
public void cls1test2(){
}
In class 2
@Test(groups={"cls2","other"}, dependsOnGroups="cls1", alwaysrun=true)
public void cls2test1(){
}
@Test(groups={"cls2","other"}, dependsOnMethods="cls2test1", dependsOnGroups="cls1", alwaysrun=true)
public void cls2test2(){
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8987 次 |
| 最近记录: |