1

我是编程新手。我对 testng.xml 和 Jenkins 有疑问。我使用以下参数在 Jenkins 中运行参数化构建:

install
-Dreportium-job-name=${JOB_NAME}
-Dreportium-job-number=${BUILD_NUMBER}
-Dreportium-tags=${myTag}
-DtestngXmlDir=src/main/resources/jenkins/test/scenarios/JPMTEST
-DtestngXmlFile=JPM1-testng_oekktest.xml
-Dtests=Galaxy_S9

我的 testng.xml

<test name="Galaxy_S9" enabled="true">

<parameter name="driver.capabilities.scriptName" value="Galaxy_S9"></parameter>
<parameter name="driver.capabilities.deviceName" value="1C5B539704037ECE"></parameter>
<parameter name="env.resources" value="src/main/resources/common;src/main/resources/android;src/main/resources/android/test" />
<parameter name="username" value="test.testuser9@test.ch" />
<parameter name="password" value="Abcd1234" />
    <groups>
        <run>
            <include name="@MTC-016432" />
        </run>
    </groups>
    <classes>
        <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
    </classes>
</test> 

现在,如果我启动 Jenkins 构建,则测试仅针对“Galaxy_S9”开始,这没关系。所有其他电话都无法启动。

但现在我正在寻找一种解决方案,为 jenkis 提供一个额外的参数

<include name="@MTC-016432" />

开始指定的测试。

我怎样才能做到这一点?我想告诉 Jenkins 要运行哪个测试,例如“@MTC-016432”

让-皮埃尔欢呼

4

1 回答 1

0

您可以通过命令行传递它,而不是在配置文件中设置组,如下所示:

-Dgroups=@group1,@group2

当您使用 QAFGherkinScenarioFactory时,您还可以使用元数据过滤器功能,您可以在其中传递-Dinclude=<filter>-Dinclude=<filter>参数。要使元数据过滤器起作用,您需要QAFMethodSelector在配置文件中添加如下:

<method-selectors>
    <method-selector>
        <selector-class name="com.qmetry.qaf.automation.testng.pro.QAFMethodSelector" />
    </method-selector>
</method-selectors>

使用元数据过滤器,您可以传递如下参数

-Dinclude={'groups':['@grp1']}

从 qaf 版本 2.1.14 开始,GherkinScenarioFactory您可以使用BDDTestFactory2和利用BDD2而不是

于 2019-03-12T00:49:48.093 回答