在我的项目中,我们开发了一种结构,例如可以从测试文件中运行各个测试用例,对于完整的BVT,我们也必须使用testng xml来运行相同的用例(以正确的顺序运行(跳过当前测试(如果先前的测试失败)。
但是,当我们尝试使用这种方法运行方案时,我们要么能够运行所有方案(不能跳过测试,并且如果第一次失败,它们都将失败),或者根本不运行它们。
请查看下面与我的项目代码相似的代码片段,如果我在这里缺少内容,请告诉我。
首次测试:
import org.testng.Assert;
import org.testng.annotations.Test; /** * Hello world! * */
public class App {
@Test(groups = "FirstGroup") public void testCase1() {
boolean x = true;
System.out.println("Test Case 1");
Assert.assertEquals(x, true);
}
}
第二项测试:
import org.testng.Assert;
import org.testng.annotations.Test;
public class App2 {
@Test(groups = "SecondGroup") public void testCase2() {
boolean x = true;
System.out.println("Test Case 2");
Assert.assertEquals(x, false);
}
}
testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="softwaretestingmaterial">
<test name="testngTest">
<classes>
<class name="Project.Test.Test.App" />
</classes>
</test>
<test name="testngTest2">
<groups>
<run>
<include name="Project.Test.Test.App" />
<include name="Project.Test.Test.App2" />
</run>
<dependencies>
<group name="SecondGroup" depends-on="FirstGroup"></group>
</dependencies>
</groups>
<classes>
<class name="Project.Test.Test.App2" />
</classes>
</test>
</suite>
答案 0 :(得分:0)
您可能想尝试将这些依赖项指定为如下所示的注释,而不是在TestNg.xml文件中指定它们。
import org.testng.Assert;
import org.testng.annotations.Test;
public class App2 {
**@Test(groups = "SecondGroup", dependsOnMethods = { "testCase1" })**
public void testCase2() {
boolean x = true;
System.out.println("Test Case 2");
Assert.assertEquals(x, false);
}
}
更新的答案: 是的,你是对的。 似乎没有简单的方法可以实现此目的。但是,我做了一些阅读后发现: https://www.seleniumeasy.com/testng-tutorials/skip-test-in-testng
如果优先级测试失败,则可以将此机制与ITestListener结合使用以跳过后续测试。尽管我不太确定如何运行,但是可以设计相同的逻辑。
您的最后一个选择是将ITestListener与Excel工作表结合使用,该工作表存储优先级测试的通过/失败状态并相应地跳过测试