我的生产测试套件运行中遇到了问题。
testng.xml已设置为使用自定义侦听器在多线程环境中运行测试套件。因此,每个测试都有几个驱动程序实例单独并行地运行。 上次套件开始失败,我注意到了奇怪的行为:
每个在@Test注释中具有dependsOnMethods的测试方法中的每个测试都不会执行。驱动程序只是跳过它们,并且不会执行@AfterTest方法。 或者,我认为它不会跳过它们,它不报告依赖“登录”方法完成的方法,它们可以继续执行。
但我不知道为什么会这样呢
像这样的Smth:@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login")
public void createSmth() {
///
}
@Test(dependsOnMethods = "createService")
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
答案 0 :(得分:1)
请参阅您的代码,
@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login", alwaysRun=true)
public void createSmth() {
///
}
@Test(dependsOnMethods = "createSmth", alwaysRun=true)
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
即使依赖方法无法执行,createSmth和deleteSmth也会一直运行。类调用之前和之后将在调用当前类中的第一个/最后一个测试方法之前/之后运行。 @BeforeClass,当多个测试需要共享相同的计算昂贵的设置代码。 @BeforeClass只会被执行一次。
即使您将在parellel
中使用testng.xml运行,它仍然有效答案 1 :(得分:0)
问题在于testng逻辑。 通过大量实验确定,TestNG始终在并行运行结束时运行相关方法。 意思是,你有3个测试类: Test1.java Test2.java Test3.java
并且每种都有一些测试方法。
TestNG套件包含3个类将从这些类中运行每个非依赖方法,而不是返回并完成剩下的那些依赖方法。
疯狂的行为,但看起来像是/