0

在我的项目中,我们开发了这样的结构,例如我们可以从测试文件中运行单个测试用例,而对于完整的 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>
4

1 回答 1

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 表结合使用,该表存储您的优先级测试的通过/失败状态并相应地跳过测试

于 2019-07-01T08:16:38.437 回答