栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

前言

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

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

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

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

Jenkins基础知识

Jenkins相关知识还是蛮多的,可以参考

Jenkins(一)

Jenkins(二)

Jenkins(三)

Jenkins(四)

Jenkins(五)

Jenkins(六)

Jenkins(七)

Jenkins(八)

编写Jenkinsfile

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

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

    测试环境准备

    测试代码拉取

    测试用例执行

    测试报告生成

    测试结果发送

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

采用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']]
        }
      }
   }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757558.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号