当前位置: 首页 > news >正文

基于 jenkins 部署接口自动化测试项目!

引言

在现代软件开发过程中,自动化测试是保证代码质量的关键环节。通过自动化测试,可以快速发现和修复代码中的问题,从而提高开发效率和产品质量。而 Jenkins 作为一款开源的持续集成工具,可以帮助我们实现自动化测试的自动化部署。本文将详细介绍如何基于 Jenkins 部署接口自动化测试项目。

Jenkins 简介

Jenkins 是一款开源的持续集成工具,支持自动化构建、测试和部署。通过 Jenkins,我们可以在代码提交后自动触发测试,生成测试报告,并在测试失败时发送通知,从而实现快速反馈和问题定位。

Jenkins 环境配置

在开始部署之前,我们需要先配置 Jenkins 环境。

  • 安装 Jenkins

    下载并安装 Jenkins,可以参考 Jenkins 官方文档。

  • 安装必要的插件

    在 Jenkins 中安装以下插件:

    • Pipeline

    • Git

    • Email Extension

    • Allure Jenkins Plugin(可选,用于生成测试报告)

    • WeChat Notification

  • 配置全局工具

    在 Jenkins 的 "Manage Jenkins" -> "Global Tool Configuration" 中,配置 JDK、Git 和 Python 环境。

创建 Jenkins Pipeline

接下来,我们创建一个 Jenkins Pipeline 来自动化执行接口测试。

  • 创建新的 Pipeline 项目

    在 Jenkins 中,点击 "New Item",输入项目名称,选择 "Pipeline",然后点击 "OK"。

  • 配置 Pipeline 脚本

    在项目配置页面,找到 "Pipeline" 部分,选择 "Pipeline script",然后编写以下脚本:

    pipeline {agent anyenvironment {PYTHON_ENV = 'python3'}triggers {pollSCM('H/5 * * * *') // 每5分钟轮询检查Git更新cron('H H(0-7) * * 1-5') // 每个工作日的午夜到7点间进行无人值守构建}stages {stage('Clone Repository') {steps {git 'https://github.com/your-repo/your-project.git'}}
      stage('Install Dependencies') {steps {sh "${PYTHON_ENV} -m venv venv"sh "source venv/bin/activate"sh "pip install -r requirements.txt"}}stage('Run Tests') {steps {sh "source venv/bin/activate"sh "pytest --junitxml=results.xml"}}stage('Publish Results') {steps {junit 'results.xml'}}
    
      }

      post {
          always {
              cleanWs()
          }
      failure {mail to: 'your-email@example.com',subject: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"script {def wechatRoom = 'your-wechat-room-id'def wechatMessage = "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"wechatNotification wechatRoom, wechatMessage}}success {mail to: 'your-email@example.com',subject: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"}
    
      }
    }
  • 保存并运行 Pipeline

    保存配置,然后点击 "Build Now" 运行 Pipeline。Jenkins 将自动克隆代码库、安装依赖、运行测试并发布测试结果。

四、通知配置

为了在测试失败时及时通知相关人员,我们可以在 Jenkins 中配置邮件和企业微信通知。

  • 配置邮件服务器

    在 Jenkins 的 "Manage Jenkins" -> "Configure System" 中,找到 "Extended E-mail Notification" 部分,配置 SMTP 服务器和发送邮箱信息。

  • 配置企业微信通知

    安装并配置 WeChat Notification 插件,并在 Pipeline 脚本中添加企业微信通知的代码。

  post {always {cleanWs()}failure {mail to: 'your-email@example.com',subject: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"script {def wechatRoom = 'your-wechat-room-id'def wechatMessage = "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"wechatNotification wechatRoom, wechatMessage}}success {mail to: 'your-email@example.com',subject: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"}}

触发机制

Jenkins 的触发机制可以帮助我们在特定条件下自动执行构建任务,以下是常见的触发方式:

  • Git 代码更新时触发

    使用 pollSCM 触发器,每隔一段时间检查 Git 仓库的更新,如果有更新则触发构建。以下是每5分钟检查一次的配置:

    triggers {pollSCM('H/5 * * * *')
    }
    
  • 核心接口用例的无人值守触发

    使用 cron 触发器,在特定时间段内自动执行核心测试用例。以下是每个工作日的午夜到7点间进行无人值守构建的配置:

    triggers {cron('H H(0-7) * * 1-5')
    }
    
  • 其他用例集合的手动触发

    对于非核心的测试用例,我们可以手动触发构建任务。只需在 Jenkins 的项目页面点击 "Build Now" 即可手动执行。

优点与思路设计

优点

  1. 高效自动化:通过 Jenkins 自动化部署接口测试项目,可以大幅提高测试效率,减少人工干预。

  2. 持续集成:自动化触发机制确保每次代码更新都能进行测试,及时发现问题。

  3. 全面通知:通过邮件和企业微信等多种通知方式,确保相关人员能及时了解构建和测试结果。

  4. 可视化报告:通过 Allure 报告插件,生成直观的测试报告,方便问题定位和分析。

思路设计

  1. 环境配置:先配置好 Jenkins 环境,包括安装必要的插件和配置全局工具,确保 Pipeline 能正常运行。

  2. Pipeline 脚本:编写灵活的 Pipeline 脚本,实现代码的克隆、依赖安装、测试执行和结果发布等功能。

  3. 通知机制:配置邮件和企业微信通知,在构建和测试失败时及时通知相关人员,确保问题能快速得到处理。

  4. 触发机制:根据不同需求配置触发器,实现自动化和手动触发相结合,确保测试覆盖全面。

完整的 Jenkins 配置文件示例

以下是一个完整的 Jenkins 配置文件示例,包含了上述所有配置:

pipeline {agent anyenvironment {PYTHON_ENV = 'python3'}triggers {pollSCM('H/5 * * * *') // 每5分钟轮询检查Git更新cron('H H(0-7) * * 1-5') // 每个工作日的午夜到7点间进行无人值守构建}stages {stage('Clone Repository') {steps {git 'https://github.com/your-repo/your-project.git'}}stage('Install Dependencies') {steps {sh "${PYTHON_ENV} -m venv venv"sh "source venv/bin/activate"sh "pip install -r requirements.txt"}}stage('Run Tests') {steps {sh "source venv/bin/activate"sh "pytest --junitxml=results.xml"}}stage('Publish Results') {steps {junit 'results.xml'}}}post {always {allure includeProperties: false, jdk: '', results: [[path: 'allure-results']]cleanWs()}failure {mail to: 'your-email@example.com',subject: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"script {def wechatRoom = 'your-wechat-room-id'def wechatMessage = "Build failed in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"wechatNotification wechatRoom, wechatMessage}}success {mail to: 'your-email@example.com',subject: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",body: "Build succeeded in Jenkins: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"}}
}

通过以上步骤,我们可以实现基于 Jenkins 的接口自动化测试项目部署,从而提高测试效率和代码质量。希望本文能对您有所帮助。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 文件上传接口
  • Hive的基本操作(查询)
  • 盘古信息MOM系统:赋能企业打造高效数字化车间的关键
  • 【绘唐阿祖】Ai小说推文一键生成工具功能预览极速版
  • AI智能名片在Web 3.0技术栈中的应用与前景研究
  • FastAPI 学习之路(五十)WebSockets(六)聊天室完善
  • 近源渗透简介
  • 5. 基于Embedding实现超越elasticsearch高级搜索
  • python数据可视化(6)——绘制散点图
  • 【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)
  • huggingface 数据集和模型加速下载, hfdata 输出为json
  • 实验二:图像灰度修正
  • 【vue深入学习第1章】Vue.js 中的 Ajax 处理:vue-resource 库的深度解析
  • 聊聊自动驾驶中的路径和轨迹
  • 算法力扣刷题记录 四十八【513.找树左下角的值】
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • HashMap剖析之内部结构
  • JS笔记四:作用域、变量(函数)提升
  • js面向对象
  • Laravel5.4 Queues队列学习
  • ng6--错误信息小结(持续更新)
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • React Transition Group -- Transition 组件
  • Service Worker
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue数据传递--我有特殊的实现技巧
  • Web标准制定过程
  • Zsh 开发指南(第十四篇 文件读写)
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 什么是Javascript函数节流?
  • 使用parted解决大于2T的磁盘分区
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 王永庆:技术创新改变教育未来
  • 字符串匹配基础上
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​第20课 在Android Native开发中加入新的C++类
  • #git 撤消对文件的更改
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Charles)如何抓取手机http的报文
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (二)hibernate配置管理
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四)汇编语言——简单程序
  • (算法)Game
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .naturalWidth 和naturalHeight属性,
  • .net 7和core版 SignalR
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net实现SCrypt Hash加密
  • /run/containerd/containerd.sock connect: connection refused
  • ??在JSP中,java和JavaScript如何交互?