在 TestNG 中对测试进行分组的正确方法

Correct way of grouping tests in TestNG

我是 TestNG 的新手。我们正在尝试实现用于自动化测试的 POM 框架。我们正在使用 WebDriver、Java、TestNG 和 TestLink。执行测试用例后,我将结果发送到 TestLink。

我创建了一堆测试脚本。 我的每个测试脚本都有很多测试用例。 有时我们可能想要 运行 特定版本的特定测试。管理这个最简单的方法是什么?我知道我们可以在 TestNG 中禁用测试,但我可能必须手动去更新我的许多测试脚本。我觉得 TestNg 中的组功能不是很好。有什么建议吗?

您可以在测试用例中使用注释:

 @Test(groups = { "FUNCTIONAL_TEST_GROUP" })

   @Test(groups = { "REGRESSION_TEST_GROUP" })

更新

如果您使用 Maven 来 运行 您的测试,您可以从命令行指定要 运行 的测试,如下所示:

mvn test -Dgroups=FUNCTIONAL_TEST_GROUP,REGRESSION_TEST_GROUP

如果您使用Maven,您可以在suite.xml文件中指定要运行的测试;像这样:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestAll">

  <test name="RegressionTest">
    <groups>
        <run>
            <exclude name="FUNCTIONAL_TEST_GROUP" />
            <include name="REGRESSION_TEST_GROUP" />
        </run>
    </groups>

    <!-- List all tests to include in this suite -->     
    <classes>
        <class name="com.path.to.your.tests" />
    </classes>

    <!-- OR include all packages -->
    <packages>
        <package name=".*" ></package>   
    </packages>

  </test>

</suite>

我的团队使用类似于 'tags' 的组,因为您可以为每个测试添加多个组。这允许您在测试中放置不同的支点。

例如,给定一个简单的登录测试可以是这样的:

@Test(groups = {"login", "basic", "acceptance"}

通过这种方式,您可以在任何时候有人更改登录代码以及在您执行基本测试套件时关联此测试 运行,但也可以将其包含在更大的 'acceptance' 套件中。