代码之家  ›  专栏  ›  技术社区  ›  Nick Gilbert

使用beanshell引用testng.xml中定义的参数

  •  0
  • Nick Gilbert  · 技术社区  · 5 年前

    我正试图使用一个参数来确定将运行我的测试套件中的测试组。为此,我的testng.xml文件目前看起来像这样。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite">
        <test name="Test">
            <parameter name="groupToRun" value="${valueFromJenkins}" />
            <method-selectors>
                <method-selector>
                    <script language="beanshell"><![CDATA[
           return groups.containsKey(groupToRun);
         ]]></script>
                </method-selector>
            </method-selectors>
            <classes>
                <class name="main.java.CWV_Functional.CWV_Functionals" />
            </classes>
        </test>
    </suite> 
    

    其思想是GroupToRun的值是从触发此测试套件的Jenkins作业传递的。然后beanshell读取参数以确定应该运行哪个组。

    问题是我不知道如何引用在testng.xml文件的参数标记中定义的参数,并且找不到任何显示如何执行此操作的文档。

    有人知道如何使用beanshell引用testng.xml文件中定义的参数吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Krishnan Mahadevan    5 年前

    引用测试文档 here

    为了方便起见,testng定义了以下变量:

    • java.lang.reflect.Method method :当前测试方法。
    • org.testng.ITestNGMethod testngMethod :当前测试方法的说明。
    • java.util.Map<String, String> groups :当前测试方法所属组的映射。

    所以你只需要通过 ITestNGMethod 对象。

    这是你的做法

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="54335160_suite" parallel="false" verbose="2" configfailurepolicy="continue">
      <parameter name="groupToRun" value="foo"/>
      <method-selectors>
        <method-selector>
          <script language="beanshell"><![CDATA[
            grpParameter = testngMethod.getXmlTest().getParameter("groupToRun");
           return groups.containsKey(grpParameter);
         ]]></script>
        </method-selector>
      </method-selectors>
      <test name="54335160_test">
        <classes>
          <class name="com.rationaleemotions.stackoverflow.qn54335160.Qn54335160Sample">
          </class>
        </classes>
      </test>
    </suite>