如何读取通过ant传递给testng.xml的参数

时间:2010-10-14 21:41:15

标签: xml ant shell sh

以下是该方案:

使用一个参数调用 ant shell脚本。然后ant执行 testng.xml (套件文件)传递相同的参数,而testng依次在传递相同的参数时执行 test

就我而言,我正在传递浏览器字符串,例如。(firefox,iexplore)参数,该参数将指定将运行哪个浏览器测试。我希望能够让我的测试结果输出告诉我测试运行的浏览器。

我从蚂蚁命令行中获取参数:

...

<sysproperty key="browser" value="${browser}"/>

我在想,既然ant调用了testng.xml,我可以在testng.xml中做同样的事情

我去了testng.xml并做了类似的事情:

<suite name="AcceptanceSuite_${browser}">
<test name="Acceptance Test_${browser}" >

我希望我没有失去任何人。解释事物并不是最好的,只需要在testng.xml中捕获这个参数,并将其包含在套件名称

2 个答案:

答案 0 :(得分:4)

在build.xml文件中,在testng标记中设置delegateCommandSystemProperties = true并添加 testng标记下的<sysproperty key="property" value="${property}"/>如下:

<target name="execute" depends="compile">
        <testng delegateCommandSystemProperties="true">
            <sysproperty key="property" value="${property}"/>
            <xmlfileset dir="${basedir}" includes="testng.xml" />
        </testng>
    </target>

在testng文件中,在参数标记中添加“key”和“value”,如下所示:

<parameter name="property" value="${property}"></parameter>

从命令行运行ant并传递参数值,如下所示:

ant -Dproperty=true execute

这应该有用。

答案 1 :(得分:1)

如果您将delegateCommandSystemProperties设置为<sysproperty>,我认为它应与true一起使用 并将<sysproperty>嵌套在<testng>

不确定您是否嵌套了<sysproperty>