在单个 testng.xml 中管理多个测试组
Managing multiple test groups in single testng.xml
在由 testNG
管理的基于 Java
的项目中,我有各种各样的测试,每个测试可以属于几个组。假设这些组是“Sanity”、“Regression”、“UI”、“API”、“Integration”、“Module1”、“Module2”、“Module3”等
例如。 @Test(priority = 7 ,groups= {"Sanity", "Regression", "UI", "Partners"}, description= "Create new partner")
我希望能够 运行 在 Chrome
、Firefox
和 Edge
浏览器上进行测试。
我知道我可以在 testng.xml
中为每个特定组合或每个特定组创建单独的测试,例如
<test verbose="2" preserve-order="true" name="ChromeTests">
<parameter name="browser" value="Chrome"/>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到 运行 Chrome
中的所有测试,我可以使用
<test verbose="2" preserve-order="true" name="Sanity Tests">
<groups>
<run>
<include name = "Sanity">
</include>
</run>
</groups>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到运行“理智”相关测试,我可以使用
<test verbose="2" preserve-order="true" name="ChromeTests">
<parameter name="browser" value="Chrome"/>
<groups>
<run>
<include name = "Sanity">
</include>
</run>
</groups>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到 运行 对“Chrome”的“理智”测试。
但是我有 3 个浏览器,假设有 10 个测试组。
我不认为我必须在 testng.xml
中定义 30 个测试来涵盖我拥有的所有可能组合。
另外,如何从 IntelliJ
?
中调用 testng.xml
中的特定测试
请查看已实施的以下问题:https://youtrack.jetbrains.com/issue/IDEA-115242
它应该提供 运行 几个用逗号分隔的组的能力:
只需将您的群组分成几个单独的 .xml 文件 - Sanity.xml & Regression.xml等
然后执行以下操作:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression">
<test name="Regression Suite">
<groups>
<run>
<include name="Regression"/>
</run>
</groups>
<packages>
<package name="com.auto.test.*"/>
</packages>
</test>
</suite>
然后您需要像这样更新您的 pom.xml:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<suiteXmlFiles>
<!--suppress UnresolvedMavenProperty -->
<suiteXmlFile>src/test/resources/suites/${suite}.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
然后,每当您 运行 在 Maven 中进行测试时,您都必须像这样传递套件文件名:
mvn clean test -Dsuite=Regression
在由 testNG
管理的基于 Java
的项目中,我有各种各样的测试,每个测试可以属于几个组。假设这些组是“Sanity”、“Regression”、“UI”、“API”、“Integration”、“Module1”、“Module2”、“Module3”等
例如。 @Test(priority = 7 ,groups= {"Sanity", "Regression", "UI", "Partners"}, description= "Create new partner")
我希望能够 运行 在 Chrome
、Firefox
和 Edge
浏览器上进行测试。
我知道我可以在 testng.xml
中为每个特定组合或每个特定组创建单独的测试,例如
<test verbose="2" preserve-order="true" name="ChromeTests">
<parameter name="browser" value="Chrome"/>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到 运行 Chrome
中的所有测试,我可以使用
<test verbose="2" preserve-order="true" name="Sanity Tests">
<groups>
<run>
<include name = "Sanity">
</include>
</run>
</groups>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到运行“理智”相关测试,我可以使用
<test verbose="2" preserve-order="true" name="ChromeTests">
<parameter name="browser" value="Chrome"/>
<groups>
<run>
<include name = "Sanity">
</include>
</run>
</groups>
<classes>
<class name="tests.MainRunner">
</class>
</classes>
</test>
到 运行 对“Chrome”的“理智”测试。
但是我有 3 个浏览器,假设有 10 个测试组。
我不认为我必须在 testng.xml
中定义 30 个测试来涵盖我拥有的所有可能组合。
另外,如何从 IntelliJ
?
testng.xml
中的特定测试
请查看已实施的以下问题:https://youtrack.jetbrains.com/issue/IDEA-115242
它应该提供 运行 几个用逗号分隔的组的能力:
只需将您的群组分成几个单独的 .xml 文件 - Sanity.xml & Regression.xml等 然后执行以下操作:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression">
<test name="Regression Suite">
<groups>
<run>
<include name="Regression"/>
</run>
</groups>
<packages>
<package name="com.auto.test.*"/>
</packages>
</test>
</suite>
然后您需要像这样更新您的 pom.xml:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<suiteXmlFiles>
<!--suppress UnresolvedMavenProperty -->
<suiteXmlFile>src/test/resources/suites/${suite}.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
然后,每当您 运行 在 Maven 中进行测试时,您都必须像这样传递套件文件名:
mvn clean test -Dsuite=Regression