前一段时间在做接口测试自动化方面的工作。现在整理下,接口测试国中学到的知识,做到边学边用到实践了。下面,介绍下,把接口测试项目集成到 Jenkins,建立 PIpeline 项目。
Pipeline 是一套运行于 jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
环境配置:Jenkins 2.121.1
其他项目构建成功后,会触发接口自动化测试项目。接口自动化测试项目分为 3 个阶段:Preparation,Build 和 Result。下图显示项目的执行效果。
新建 Pipeline 项目很简单:Jenkins 选择 “新建” -> "流水线"(Pipeline)
“General” 配置和 “构建触发器” 配置,这里不再介绍,重点介绍 Pipeline“流水线” 配置,需要把构建过程用 Pipeline script 的形式描述
保存 Pipeline script 有 2 种方法:一种是 pipeline script from SCM:需要配置 SCM 代码存储 Git 地址或 SVN 地址,指定 script 文件 Jenkinsfile 所在路径,每次构建 job 会自动去指定的目录执行 script 文件;一种是 pipeline script,直接在 Web UI 的 script 输入框输入 pipeline script 语句;分别的界面如下:
node('229') {
stage('Preparation') {
git credentialsId: '****', url: 'http://gitlab.***.com/***/testcase_****_APITest.git'
}
sleep time: 1, unit: 'MINUTES'
stage('Build') {
catchError {
sh '''#!/bin/bash
cd ..
source httpruner_venv/bin/activate
cd PCCashier_APITest_Dev
hrun --dot-env-path devlop.env --html-report-name index_dev.html tests/testcases/'''
}
echo currentBuild.result
if (currentBuild.result == 'FAILURE')
{
step([$class: 'Mailer', notifyEveryUnstableBuild: true,
recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'],
[$class: 'RequesterRecipientProvider']])])
}
}
stage('Results') {
publishHTML([allowMissing: true, alwaysLinkToLastBuild: true, includes: '**/*.html', keepAll: true, reportDir: '/home/jenkins/work/workspace/PCCashier_APITest_Dev/reports', reportFiles: 'index_dev.html', reportName: 'Html_Report', reportTitles: 'PC收银台接口测试报告'])
}
}
第一次接触 Pipeline script,肯定比较困难。Jenkins 也提供了脚本生成器。可以选择需要的功能,并输入参数,可点击自动生成脚本。
接下来,简单描述脚本的注释。
node('229')
表示项目运行在 Jenkins 的节点 229 上。
stage('Preparation')
项目的 Preparation 阶段,主要填写接口测试项目的 git 库地址,用户名和密码(身份认证),这样每次执行构建,都会更新到最新的状态,执行最新的测试用例。
stage('Build')
项目的 Build 阶段,主要填写执行接口测试的 shell 脚本,并在测试执行失败时给造成构建失败的代码提交者和触发构建者发送邮件。
stage('Results')
项目的 Result 阶段,主要填写接口测试执行完成后,发布生成的测试报告(index_dev.html),可在 Jenkins 里查看,报告名是 Html_Report,报告页面的标题是。