[英]How to run individual/multiple tests present in suite i.e testng.xml
testng.xml文件
<test name="Regression 1">
<parameter name="group" value="regression"></parameter>
<groups>
<run>
<include name = "regression"/>
</run>
</groups>
<packages>
<package name="com.turvo.tests.regressiontests.regression1.*">
</package>
</packages>
</test>
<test name="Regression 2">
<parameter name="group" value="regression"></parameter>
<groups>
<run>
<include name = "regression"/>
</run>
</groups>
<packages>
<package name="com.turvo.tests.regressiontests.regression2.*">
</package>
</packages>
</test>
我想對testng.xml進行參數化,這樣我就只能運行回歸1測試或回歸2測試,或者如果需要,可以通過從命令行傳遞變量來運行。 有什么方法可以做到這一點?
基本上有兩種方法可以實現此目的。
使用Maven surefire插件
要通過Maven surefire插件實現此目的,請將您的surefire插件配置為如下所示。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
</suiteXmlFiles>
<properties>
<property>
<name>testnames</name>
<value>${tests}</value>
</property>
</configuration>
</plugin>
在pom.xml的<properties>
部分中,添加以下屬性
<properties>
<suiteXmlFile>src/test/resources/suite.xml</suiteXmlFile>
<tests>48341304_Test1</tests>
</properties>
可以說您的套件xml如下所示
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="48341304_Suite" parallel="false" verbose="2">
<test name="48341304_Test1" verbose="2">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn48341304.TestClassOne"/>
</classes>
</test>
<test name="48341304_Test2" verbose="2">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn48341304.TestClassTwo"/>
</classes>
</test>
</suite>
現在,您可以通過maven命令行選擇要執行的<test>
: mvn test -Dtests=48341304_Test2
警告
唯一要注意的是,您將不得不為JVM參數-Dtests
提供一些值(這就是為什么我在<properties>
部分中為標簽<tests>
定義了默認值的原因之一。
使用如下所示的beanshell表達式
套件xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="48341304_Suite" parallel="false" verbose="2">
<test name="48341304_Test1" verbose="2">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[
whatTest = System.getProperty("testToRun");
print(whatTest)
if (whatTest == null || whatTest.trim().isEmpty()) return true;
whatTest.contains(testngMethod.getXmlTest().getName());
]]>
</script>
</method-selector>
</method-selectors>
<classes>
<class name="com.rationaleemotions.stackoverflow.qn48341304.TestClassOne"/>
</classes>
</test>
<test name="48341304_Test2" verbose="2">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn48341304.TestClassTwo"/>
</classes>
</test>
</suite>
現在,您甚至可以通過喜愛的IDE運行該套件xml文件,並且該套件xml文件現在與構建工具無關(它可以與Maven(或)Gradle(或)Ant一起使用)。 為了選擇需要運行的<test>
標記,請通過JVM參數-DtestToRun
傳遞值
這是IntelliJ中運行配置的快照
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.