【问题标题】:Jenkins Pipeline give User Input to run specific testng.xmlJenkins Pipeline 提供用户输入以运行特定的 testng.xml
【发布时间】:2019-11-08 00:24:04
【问题描述】:

我正在使用带有 selenium (Java) Testng 的 gradle 来自动化我的测试用例,并选择 Jenkins 来构建脚本。

我的工作区中有许多 testng.xml 文件,位于 src/test/resources --> ACE_Regression(包)

我的 build.gradle 看起来像这样

buildscript 
{

ext

 {

testNgVersion = "6.14.3"

    }
}

apply plugin: 'java-library'

repositories {

    jcenter()

     mavenCentral()

}

dependencies {

    api 'org.apache.commons:commons-math3:3.6.1'

    implementation 'com.google.guava:guava:27.0.1-jre'

    implementation 'com.google.guava:guava:27.0.1-jre'

    testImplementation 'junit:junit:4.12'

    implementation "org.testng:testng:$testNgVersion"

    compile group: 'org.freemarker', name: 'freemarker', version: '2.3.23'

    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.14.0'

    compile group: 'com.aventstack', name: 'extentreports', version: '3.0.6'

    compile group: 'com.relevantcodes', name: 'extentreports', version: '2.41.2'

    compile group: 'org.apache.poi', name: 'poi', version: '4.0.0'

    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.0.0'

    compile group: 'commons-io', name: 'commons-io', version: '2.4'

    compile group: 'ru.yandex.qatools.ashot', name: 'ashot', version: '1.5.2'

    testCompile group: 'io.rest-assured', name: 'rest-assured', version: '3.0.0'

    compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'

  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.12.1'

  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.12.1'  

}



test {

useTestNG() 

{

suites "src/test/resources/ACE_Regression/Acelogin.xml"

suites "src/test/resources/ACE_Regression/CLAs.xml"

    }
}

现在我使用“gradlew test”从 jenkins 运行我的测试。

我想从 jenkins 提供输入以仅运行 CLAs.xml 文件。像这样我有许多 XML 文件可用。我想参数化作业以仅选择所需的 testng 文件并运行。

谁能帮我在 build.gradle 文件和 jenkins 中设置这个测试任务

提前致谢

【问题讨论】:

  • 尝试将系统属性与 gradle 任务 gradlew test -DXmlName="yourxml" 一起传递,然后访问 build.gradle 中的系统属性来完成这项工作

标签: java selenium jenkins gradle testng


【解决方案1】:

修改 build.grade 中的 useTestNG() 。它应该接受一个动态参数,例如xml名称。

test {

    useTestNG() 
        {
           suites "src/test/resources/ACE_Regression/${xmlName}.xml"
        }
    }

在 gradle 调用块中使用 -P 选项传递 xmlName。即 gradlew test -PxmlName=CLAs ,它应该可以工作。

为了使其更具动态性,让您的 jenkins 构建参数化。通过 testSuites 的名称创建一个选择参数,并在其中添加所有可能的 xml 文件名。 然后将此选择参数传递给 gradle 调用命令块,即gradle test -PxmlName=${testSuites}

【讨论】:

  • 如果我必须从 jenkins 传递多个值怎么办?喜欢执行不同的测试套件......这意味着我必须在 useTestNG () { suites "src/test/resources/ACE_Regression/${xmlName1}.xml" suites "src/test/resources 下动态添加另一行/ACE_Regression/${xmlName2}.xml" }}
  • 使您的构建参数化。添加 choice 参数,使用 testSuite 文件名的可能值填充选项,以及换行符。在可执行命令中使用选择参数名称。
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 2019-03-04
  • 1970-01-01
相关资源
最近更新 更多