到此,我们已经实现在本地运行用例了。
这个时候其实还处于demo阶段,在本地手工运行个几次,效果没那么大。
自动化测试需要与CICD流程进行串联才能体现其价值,无论是作为线上巡检,还是发版前的自动检查。
所以需要将测试套与Jenkins进行结合。
我们暂时不和开发阶段的流程串联,先完成测试部分的流程。
测试部分流程,大概有这几步
测试环境准备
测试代码拉取
测试用例执行
测试报告生成
测试结果发送
这里采用固化的执行设备去进行测试,所以可以省略「测试环境准备」
采用Jenkins的方式发送报告没有直接在脚本中实现来的灵活,所以这一步放在后面实现
现在Jenkinsfile
大致如下
pipeline {
agent {
}
triggers {
}
parameters {
}
stages {
stage('克隆代码'){
steps{
}
}
stage('执行测试'){
steps{
}
stage('生成Allure报告'){
steps{
}
}
}
}
agent:指定执行的测试电脑
triggers:定时执行
parameters:参数化构建
stages-stage-steps:步骤
有时候我们需要动态的选择代码仓库里面的代码,这就需要使用gitParameter
这个参数了
gitParameter(name: 'branch', branch: '', branchFilter: '.*', defaultValue: 'origin/master', description: '代码分支', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH')
它的名字是branch
默认分支为origin/master
使用的时候就是${params.branch}
credentialsId
需要改为自己的凭证
,不然可能因为权限不足无法拉取代码
stage('克隆代码'){
steps{
checkout([$class: 'GitSCM', branches: [[name: "${params.branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'https://gitee.com/zx660644/uitest.git',credentialsId: 'xxx',]]])
}
}
编写一个allure_debug.py
主入口文件,执行全部的测试用例
使用dir
切换工作路径,然后使用python xxx
运行用例
最后使用exit 0
退出
必须使用
exit 0
退出后才能生成Allure报告
stage('执行测试'){
steps{
dir("${env.WORKSPACE}/src/casess/") {
sh ""
sh '''
python3 allure_debug.py
exit 0
'''
}
}
}
path
指定报告的存放路径就可以了
stage('生成Allure报告'){
steps{
allure includeProperties: false, jdk: '', results: [[path: 'report/allure_results']]
}
}
每小时定时执行
参数化部分:
可以指定执行的电脑「test_PC」
可以指定执行的分支「branch」
可以指定发送邮件「email」
可以指定发送企业微信通知「robot」
可以指定执行的用例「cases」
pipeline {
agent {
label "${params.test_PC}"
}
triggers {
cron('H * * * *')
}
parameters {
gitParameter(name: 'branch', branch: '', branchFilter: '.*', defaultValue: 'origin/master', description: '代码分支', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH')
choice(name: 'test_PC', choices: ['a', 'b'], description: '执行设备')
choice(name: 'headless', choices: ['false', 'true'], description: '是否不显示浏览器界面')
choice(name: 'concurrent', choices: ['否', '1', '2', '3', '4', 'auto'], description: '是否并发执行,并发数')
string(name: 'robot', defaultValue: '', description: '企业微信群机器人地址,以逗号分隔')
string(name: 'email', defaultValue: '', description: '邮箱地址,以逗号分隔')
text(name: 'cases', defaultValue: '''''', description: '要执行的用例', )
}
stages {
stage('克隆代码'){
steps{
checkout([$class: 'GitSCM', branches: [[name: "${params.branch}"]], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'https://gitee.com/zx660644/uitest.git',credentialsId: 'xxx',]]])
}
}
stage('执行测试'){
steps{
dir("${env.WORKSPACE}/src/cases_ui/") {
sh ""
sh '''
python3 allure_debug.py
exit 0
'''
}
}
}
stage('生成Allure报告'){
steps{
allure includeProperties: false, jdk: '', results: [[path: 'report/allure_results']]
}
}
}
}
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。