将变量从jenkins传递到testng.xml

bjp0bcyl  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(294)

我想根据jenkins传递的变量来运行测试用例例如,选择要运行的测试用例:testcaseone,testcasetwo
在pom.xml(maven)中:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                    <configuration>

                        <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                        </suiteXmlFiles>

                        <systemPropertyVariables>
                        <chooseCase>${chooseCase}</chooseCase>   <--this dont work
                        </systemPropertyVariables>

                        <parallel>tests</parallel>
                        <threadCount>10</threadCount>

                    </configuration>
</plugin>

我有两种testng@test方法:

@Test(groups="caseOne")
@Test(groups="caseTwo")

以及我的testng.xml文件:

<test name="Test">
    <groups>
    <run>
      <include name="${chooseCase}"/>
    </run>
    </groups>
    <classes>
      <class name="AppTest"/>
      <class name="AppTest2"/>
    </classes>
  </test> <!-- Test -->

如何传递这个参数取决于我要运行什么和多少测试?也许有完全不同的方法?

roqulrg3

roqulrg31#

您可以在testng.xml文件中使用beanshell脚本http://testng.org/doc/documentation-main.html#beanshell 读取其中的系统变量,比如:

<test name="Test">
    <method-selectors>
        <method-selector>
            <script language="beanshell">
                <![CDATA[
                    String myTestGroup = System.getProperty("chooseCase");
                    groups.containsKey(myTestGroup);
                ]]>
            </script>
        </method-selector>
    </method-selectors>

    <classes>
        <class name="AppTest"/>
        <class name="AppTest2"/>
    </classes>
</test>

相关问题