Jenkin+maven+testng动态入参构建自动化

2021-03-15 14:29:10 浏览数 (1)

最近在搭建自动化的时候呢,会有这样的需求,我们可能每次触发执行的不同的选择的参数的情况,那么我们的jenkins 改如何搭建,我们的对应的maven 需要怎么配置,testng 相关的配置怎么去配置呢。那么我们这里就来和大家去一一揭开谜底。

jenkins 我们可以打开我们对应的项目。

选择配置,General勾选This project is parameterized

然后弹出如下所示 名称,我们展示界面的名称,选项是对应的选项是什么,描述,我们里面要对参数的描述,对应的都选择填写完成之后呢,我们可以在我们需要动态入参的地方去使用。

这里呢,我们是在maven上去使用的,构建选择maven ,然后去 因为我们需要的test.project 是用的上面的project ,那么我们可以用${}的方式去 动态加载我们的选择的数据。这样呢,我们jenkins的配置就完成, 我们可以 保存我们的项目,

保存后,我们可以选择build 这个时候的build 就是带参数的

我们点击build with parameters 就可以带参数的构建了。

默认选择后,我们就可以带参数构建我们的项目了,当然现在我们整体的还是没有打通的,我们需要在 maven 配置我们的构建的动态参数,

需要在pom.xml进行配置,如下。主要是配置,testEnvironment,和我们对应要执行的testng.xml。配置完成后呢,我们需要到对应的testng.xml进行配置。

代码语言:javascript复制
<configuration>
                    <systemPropertyVariables>
                        <testEnvironment>${test.project}</testEnvironment>
                        <testEnvironment>${test.testone}</testEnvironment>
                    </systemPropertyVariables>
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>

                    <workingDirectory>target/</workingDirectory>
                    <forkMode>always</forkMode>
                </configuration>

打开我们的tesng.xml ,我们去配置我们的参数,配置如下

代码语言:javascript复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite"  thread-count="5">
<test name="test">
    <parameter name="test" value="${test.testone}"></parameter>
    <parameter name="project" value="${test.project}"></parameter>
    <classes>
        <class name="TestCaseTest"></class>
    </classes>

</test>
</suite>

这样 ,我们就可以在代码中去使用我们的参数了,我这里是在

DataProvider里面使用的参数,那么我们需要对这里的参数进行获取,

获取对应的参数呢,我使用的是

ITestContext来获取的对应参数,对应的获取方式是

代码语言:javascript复制


map.put("project", context.getAttribute( context.getCurrentXmlTest().getParameter("project")));
map.put("test", context.getAttribute( context.getCurrentXmlTest().getParameter("test")));

这样呢,我们就可以获取到对应的参数了,我们在jenkins 配置我们要执行的代码的路径,就可以去执行我们对应的代码了。

欢迎关注雷子说测试。如果感觉对你有帮助,可以点亮在看。

0 人点赞