有没有办法在TestNG suite.xml中为包含的方法指定参数?

时间:2012-01-11 13:40:22

标签: xml parameters testng suite

我正在为基于TestNG的自己的测试框架编写一个suite.xml。我的xml文件如下所示:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" parallel="methods">
  <test name="NewTest">
  <parameter name="BROWSER" value="Chrome"></parameter>
  <classes>
   <class name="hm.NewTest">
     <methods>
        <include name="test"></include>
        <include name="test2"></include>
        <include name="test3"></include>
        <include name="test4"></include>
     </methods>
   </class>
 </classes>
 </test>
 </suite>

现在为完整测试指定参数“BROWSER”。但是我需要为每个包含的方法提供一个自己的参数。有谁知道解决方案?

2 个答案:

答案 0 :(得分:1)

为此而不是在测试套件xml中分配参数,您可以单独为测试分配参数。为此,您不必在suite.xml中添加每个参数。

@Parameters({ "datasource", "jdbcDriver" })
@test
public void sampleTest(String ds, String driver) {
// your test method
}

希望这会对你有用1

http://testng.org/doc/documentation-main.html#parameters

答案 1 :(得分:1)

由于某种原因,testng 6.4及更高版本不再支持方法内的参数。

但是,如果你回到6.3我认为,是支持它的最后一个版本。 我有同样的问题,并回忆它曾经在我们的框架中工作,所以我开始一次恢复一个版本。为什么他们把它拿出来是超出我的。

使用6.3你可以做到:

<methods>
        <include name="test">
          <parameter name="Firefox"/>
        </include>
        <include name="test2">
           <parameter name="Chrome"/>
        </include>
        <include name="test3">...</include>
        <include name="test4">...</include>
</methods>

以及有监听器调用的地方

iTestContext.getCurrentXmlTest().getParameters()

希望它有所帮助。如果对你来说太迟了,也许对别人来说可能是个好消息。

编辑:我喜欢!您仍然可以使用最新的testng获得它;)

iTestResult.getMethod().findMethodParameters(iTestContext.getCurrentXmlTest())