我想在 TestNG 中针对不同的测试运行不同的步骤集。这可能吗?
示例:
@BeforeMethod
Method1{
Step 1
Step 2
}
@BeforeMethod
Method2{
Step 3
Step 4
}
@Test
Test1 {
Run Method1 Steps
Test1 Steps;
}
@Test
Test2 {
Run Method2 steps
Test2 steps
}
您可以在每个需要的测试中直接调用 Method1 和 Method2,但这种方法有一些缺点,例如代码重复和用额外的数据污染测试,从而影响测试的可读性(即将设置和测试本身混合在一起)单一方法)。但如果它正确地完成了它的工作,那还是可以的。
作为替代方案,我建议查看 @BeforeMethod/@AfterMethod 注释的 onlyForGroups 属性。它允许您仅对具有指定组的测试方法运行设置/拆卸方法,因此您可以将测试逻辑与配置逻辑分离,同时在添加新的设置/拆卸方面保持良好的可扩展性。
这是一个简短的例子:
public class DummyTest {
@BeforeMethod(onlyForGroups = {"testA"})
public void beforeTestA1() {
System.out.println("Before Test A executed - 1");
}
@BeforeMethod(onlyForGroups = {"testA", "testB"})
public void beforeTestAB1() {
System.out.println("Before Test AB executed - 1");
}
@BeforeMethod(onlyForGroups = {"testB"})
public void beforeTestB1() {
System.out.println("Before Test B executed - 1");
}
@BeforeMethod(onlyForGroups = {"testB", "testA"})
public void beforeTestAB2() {
System.out.println("Before Test AB executed - 2");
}
@Test(groups = {"testA"})
public void testA() {
System.out.println("Test A executed");
}
@Test(groups = {"testB"})
public void testB() {
System.out.println("Test B executed");
}
}
输出:
Before Test A executed - 1
Before Test AB executed - 1
Before Test AB executed - 2
Test A executed
Before Test AB executed - 1
Before Test AB executed - 2
Before Test B executed - 1
Test B executed
您可以通过“dependsOnMethod”属性或方法名称(按字母顺序)控制方法之前/之后的顺序。