testng / Jenkins - 包括名称,参数化

问题描述 投票:1回答: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="[email protected]" />
<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" />

开始指定的测试。

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

让 - 皮埃尔欢呼

jenkins testng gherkin qaf testng.xml
1个回答
0
投票

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

-Dgroups=@group1,@group2

当您使用QAF GherkinScenarioFactory时,您还可以使用元数据过滤器功能,您可以传递-Dinclude=<filter>-Dinclude=<filter>参数。要使meta-data 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

© www.soinside.com 2019 - 2024. All rights reserved.