簡體   English   中英

如何運行套件中存在的單個/多個測試,即testng.xml

[英]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中運行配置的快照

IntelliJ運行配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM