testng / Jenkins - 包含名称,参数化
Posted
技术标签:
【中文标题】testng / Jenkins - 包含名称,参数化【英文标题】:testng / Jenkins - include name, parameterized 【发布时间】:2019-08-01 12:28:45 【问题描述】:我是编程新手。我对 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”
让-皮埃尔干杯
【问题讨论】:
【参考方案1】:您可以通过命令行传递它,而不是在配置文件中设置组,如下所示:
-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 开始,您可以使用 BDDTestFactory2
代替 GherkinScenarioFactory
并利用 BDD2
【讨论】:
以上是关于testng / Jenkins - 包含名称,参数化的主要内容,如果未能解决你的问题,请参考以下文章
接口测试(java+testng+ant+jenkins)第一篇 java
接口测试(java+testng+ant+jenkins)第二篇testng