基于 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 any
    
      environment {
          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 any

    environment {
        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}]"
                we

chatNotification 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 的接口自动化测试项目部署,从而提高测试效率和代码质量。希望本文能对您有所帮助。

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

软件测试面试文档

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/800653.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

itextpdf字体选择

itextpdf 版本7.2.5 itextpdf-html2pdf 版本4.0.5 这里讲的是通过html转pdf,在html2pdf中是通过html中font-family样式来确定字体的,那已知font-family的情况,怎么确定pdf中实际用的字体,大致分为两步: 1、通过font…

ollama 模型国内加速下载,制作自定义Modelfile模型文件

参考: https://www.zhihu.com/question/640579563/answer/3562899008 https://github.com/ollama/ollama/blob/main/docs/modelfile.md gguf格式介绍: https://www.datalearner.com/blog/1051705718835586 1、ollama 模型国内加速下载 ollama主要的模型文件格式是gguf,可…

LabVIEW扬尘控制系统

设计了一套基于LabVIEW的扬尘控制系统,通过监测TsP(总悬浮颗粒物)浓度、风向和摄像头视频,实现对环境的综合监控和扬尘控制。系统可以自动判断扬尘位置,并驱动抑尘设备进行抑尘。硬件选用NI cDAQ-9178数据采集模块、Om…

甄选范文“论基于构件的软件开发方法及其应用”,软考高级论文,系统架构设计师论文

论文真题 基于构作的软件开发 (Component-Based Software Development,CBSD) 是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。基于构件的软件系统中的构件可以是COTS (Commercial-Off-the-Shelf)构件,也可以是通过其它途径获得的构件(如自…

Android Stuido Gradle build编译报错原因排查

事情是这样的,在更新了支付宝sdk的aar文件后,运行项目,报错了。如下图: 但是没有给出更多错误信息。想尝试通过gradlew compileDebug --stacktrace来输出更多build时的信息,但没有得到更多有效信息。 接下来&#xff…

JVM(Java虚拟机)详解(JVM 内存模型、堆、GC、直接内存、性能调优)

JVM(Java虚拟机) JVM 内存模型 结构图 jdk1.8 结构图(极简) jdk1.8 结构图(简单) JVM(Java虚拟机): 是一个抽象的计算模型。如同一台真实的机器,它有自己…

OrangePi Aipro Ai计算测试

开发板配置 http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html CPU4核64位处理器 AI处理器GPU集成图形处理器AI算力8-12TOPS算力内存LPDDR4X:8GB/16GB(可选),速率:3200…

AI算法16-贝叶斯线性回归算法Bayesian Linear Regression | BLR

贝叶斯线性回归算法简介 频率主义线性回归概述 线性回归的频率主义观点可能你已经学过了:该模型假定因变量(y)是权重乘以一组自变量(x)的线性组合。完整的公式还包含一个误差项以解释随机采样噪声。如有两个自变量时…

使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067

首先来看一下如何,使用NIFI 去连接瀚高数据库. 其实,只要配置好了链接的,连接字符串,和驱动,任何支持JDBC的数据库都可以连接的. 首先我们用一个ListDatabaseTables处理器,来连接瀚高DB 主要是看这里,连接地址,以及驱动,还有驱动的位置 这个是数据连接的配置 jdbc:highgo://…

MagicClothing: 给人物照片换装的ComfyUI工作流(干货满满)

前言 在试验了各种ComfyUI 工作流,换了3台电脑,失败了无数次之后,终于又一次跑通了ComfyUI。 接下来会分享跑成功的各种ComfyUI工作流。 今天就拿给人物换装的新出来的这个做一个样本。 上一次文章提到给人物换装的模型[OOTDiffusion: 给人…

【OTA】-【汽车远程升级】- 技术背景及现状分析

一、OTA技术背景 在21世纪,计算机技术、物联网技术、移动通讯技术取得了巨大的成就,这些技术的发展使智能网联汽车越来越多。智能网联汽车在各行各业,例如:交通调度、工业现场、物联网设备、智慧城市、军队武器装备等,…

软件工程课设——成绩管理系统

软件工程课设——成绩管理系统 该文档是软件工程课程设计,成绩管理子系统的开发模块仓库。 功能分析 从面向的用户分,成绩管理子系统主要面向三类用户,即至少需要满足这三类用户的需求: 学生:学生是成绩管理系统的…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

PGCCC|【PostgreSQL】PCM认证考试大纲#postgresql 认证

PostgreSQL Certified Master PCM&#xff08;高级&#xff09; PostgreSQL Certified Master (PCM)是PostgreSQL的极高级别&#xff0c;是对数据库从业人员的技术、知识和操作技能的极高级别的认可。 PCM是解决极困难的技术难题和极复杂的系统故障的极佳PostgreSQL专家人选&a…

vue3 快速入门 (一) : 环境配置与搭建

1. 本文环境 Vue版本 : 3.4.29Node.js版本 : v20.15.0系统 : Windows11 64位IDE : VsCode 2. 安装Node.Js 首先&#xff0c;我们需要安装Node.Js。Node.js提供了运行 JavaScript 代码的环境。并且Node.js 带来了 npm&#xff0c;它是JavaScript世界的包管理工具。开发vue时&…

Scott Brinker:Martech的新数据层成为营销人工智能的基础

在我们最近发布的《2024年Martech状况报告》&#xff08;State of Martech 2024 report&#xff09;中&#xff0c;我和Frans Riemersma分析了整个Martech行业发生的大量转变&#xff0c;从人工智能驱动的Martech领域的爆炸式增长&#xff0c;到Martech技术栈中「可组合性」 的…

【vue教程】一. 环境搭建与代码规范配置

目录 引言Vue 框架概述起源与设计理念核心特性优势 Vue 开发环境搭建环境要求安装 Vue CLI创建 Vue 项目项目结构介绍运行与构建 组件实例基础模板响应式更新 代码规范为什么要使用代码规范在 Vue 项目中使用 ESLint 、PrettierESLint配置 ESLintrules 自定义错误级别 Prettier…

python数据可视化(6)——绘制散点图

课程学习来源&#xff1a;b站up&#xff1a;【蚂蚁学python】 【课程链接&#xff1a;【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接&#xff1a;【链接】】 Python绘制散点图查看BMI与保险费的关系 散点图: 用两组数据构成多个坐标点&#xff0c;考察…

【postgresql】pg_dump备份数据库

pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件&#xff0c;以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host&#xff1a;指定数据库服务器的主…

使用Elasticsearch Python SDK 查询Easysearch

随着数据分析需求的不断增长&#xff0c;能够高效地查询和分析大数据集变得越来越重要。Elasticsearch作为一种强大的分布式搜索和分析引擎&#xff0c;被广泛应用于各种场景。Easyearch 支持原生 Elasticsearch 的 DSL 查询语法&#xff0c;确保原业务代码无需调整即可无缝迁移…