如何编写Jenkins Pipeline脚本运行Selenium回归测试套件
Jenkins Pipeline 搭建指南:拉取项目并执行Selenium+TestNG回归测试
前置准备
确保Jenkins环境满足以下要求:
- 已安装必备插件:Git、Maven Integration、Pipeline、TestNG Results Plugin
- Jenkins节点(或代理)已配置:
- JDK 8+(匹配项目编译版本)
- Maven 3.x
- 对应浏览器的驱动(如ChromeDriver,需与浏览器版本兼容,且配置到系统PATH)
Pipeline 核心阶段与编写方法
完整的Pipeline包含代码拉取、项目构建、测试执行、报告归档四个核心阶段,以下是各阶段的实现逻辑:
1. 拉取代码
从Git仓库拉取最新测试代码,保证每次运行基于最新版本:
stage('拉取代码') { steps { git url: '你的Git仓库地址', branch: 'main' // 替换为实际仓库地址和分支 } }
2. 构建项目
用Maven编译项目、解决依赖,生成可执行测试类(跳过测试仅编译):
stage('构建项目') { steps { sh 'mvn clean compile -DskipTests' } }
3. 执行回归测试
通过Maven调用TestNG,执行regression-test.xml定义的完整回归套件,测试代码会自动读取application.properties中的app_url配置:
stage('执行回归测试') { steps { sh 'mvn test -DsuiteXmlFile=regression-test.xml' } post { always { // 在Jenkins界面展示TestNG测试结果 testNG testResultsPattern: '**/test-output/testng-results.xml' } } }
4. 归档测试报告
将TestNG原生报告和自定义报告归档,方便后续追溯:
stage('归档测试报告') { steps { archiveArtifacts artifacts: '**/test-output/**', fingerprint: true } }
完整Pipeline脚本示例
整合所有阶段,加上环境配置:
pipeline { agent any // 可指定特定代理,如agent { label 'selenium-node' } tools { maven 'Maven-3.8.6' // 替换为Jenkins中配置的Maven名称 jdk 'JDK-11' // 替换为Jenkins中配置的JDK名称 } stages { stage('拉取代码') { steps { git url: 'https://your-git-repo-url.git', branch: 'main' } } stage('构建项目') { steps { sh 'mvn clean compile -DskipTests' } } stage('执行回归测试') { steps { sh 'mvn test -DsuiteXmlFile=regression-test.xml' } post { always { testNG testResultsPattern: '**/test-output/testng-results.xml' } } } stage('归档测试报告') { steps { archiveArtifacts artifacts: '**/test-output/**', fingerprint: true } } } post { success { echo '回归测试执行成功!' } failure { echo '回归测试执行失败,请查看报告排查问题!' } } }
关键配置说明
- application.properties 加载:确保测试代码通过
@PropertySource(Spring)或原生Java Properties类正确读取该文件,保证测试用例能获取app_url配置。 - TestNG套件执行:
regression-test.xml已整合所有子测试套件,Maven命令-DsuiteXmlFile=regression-test.xml会直接触发全量回归测试。 - 并行测试配置:你的
regression-test.xml中设置了parallel="tests"和thread-count="5",Jenkins会按配置并行执行测试,提升运行效率。
常见问题排查
- 浏览器驱动找不到:检查Jenkins节点上的驱动是否配置到PATH,或在Maven命令中指定路径,如
-Dwebdriver.chrome.driver=/path/to/chromedriver。 - 无法读取
app_url:确认配置文件路径正确,且Maven编译时已将其打包到classpath。 - 报告无法归档:检查
archiveArtifacts路径是否匹配实际报告生成位置(默认TestNG报告在test-output目录)。
内容的提问来源于stack exchange,提问作者user1015388
相关产品推荐
相关产品推荐

