UI自动化测试框架搭建 —— 使用Jenkinsfile管理测试流程

前言

到此,我们已经实现在本地运行用例了。

这个时候其实还处于demo阶段,在本地手工运行个几次,效果没那么大。

自动化测试需要与CICD流程进行串联才能体现其价值,无论是作为线上巡检,还是发版前的自动检查。

所以需要将测试套与Jenkins进行结合。

编写Jenkinsfile

我们暂时不和开发阶段的流程串联,先完成测试部分的流程。

测试部分流程,大概有这几步

  1. 测试环境准备

  2. 测试代码拉取

  3. 测试用例执行

  4. 测试报告生成

  5. 测试结果发送

这里采用固化的执行设备去进行测试,所以可以省略「测试环境准备」

采用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
              '''
                  }
          }
}

生成Allure报告

path指定报告的存放路径就可以了

stage('生成Allure报告'){
  steps{
      allure includeProperties: false, jdk: '', results: [[path: 'report/allure_results']]
  }
}

完整Jenkinsfile

  • 每小时定时执行

参数化部分:

  • 可以指定执行的电脑「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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源【免费】。

你可能感兴趣的:(软件测试,技术分享,自动化,jenkins,软件测试,测试工程师,自动化测试)