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

news2024/9/21 10:46:29

引言

在现代软件开发过程中,自动化测试是保证代码质量的关键环节。通过自动化测试,可以快速发现和修复代码中的问题,从而提高开发效率和产品质量。而 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.coloradmin.cn/o/1928833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python编程:从入门到实践(第三版) 笔记

文章目录 资源网站:https://www.ituring.com.cn/book/3038配置VSCode推荐资源网站推荐资源网址 资源网站:https://www.ituring.com.cn/book/3038 配置VSCode 推荐资源网站 推荐资源网址 英文版主页: https://ehmatthes.github.io/pcc_3e 中文版主页: h…

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

​​​​​​​ 目录 一、引言 二、自动语音识别(automatic-speech-recognition) 2.1 概述 2.2 技术原理 2.2.1 whisper模型 2.2.2 Wav2vec 2.0模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数​​​​​​​ 2.3.2 pipeline对象使用参数…

MFC程序创建word,创建表格,写入数据

文章目录 1、MFC程序功能:2、MFC程序实现2.1 创建项目2.2 添加word操作类2.3 添加word资源2.4 编写代码,实现将数据写入到word2.5 运行程序、验证功能3、工程代码下载 1、MFC程序功能: 创建word文档;向文档中写入字符串&#xff…

【首发】分享一款三网话费余额查询的API系统

描述 对于计算机专业的小伙伴来说,多熟悉一个系统就多一份就业机会! 今天给大家分享一款三网话费余额查询的API系统 亲测可运行!! 内容 目前主要的内容以php为主,对于学习php有比较大的帮助! 但是网络上…

爬虫兽-抖音评论提取截流工具|评论爬虫|视频评论提取-拓客

抖音评论提取软件使用说明 抖音视频评论提取到的内容:1:视频名称 2:视频作者 3:作者地址 4:视频地址 5:评论人昵称。6:评论人主页地址。7:评论内容 8:评论日期 一&…

品牌形象的智能塑造:Kompas.ai如何构建品牌视觉识别

品牌形象是企业在消费者心中构建的独特印象,它对于品牌识别和记忆度至关重要。一个一致且具有辨识度的品牌形象能够帮助企业在激烈的市场竞争中脱颖而出。Kompas.ai,作为一款智能设计工具,正帮助品牌塑造和维护其独特的视觉识别系统。 一致的…

绿色积分引领消费增值浪潮“

尊敬的顾客们,大家好!在此,我满怀热情地与您分享一个革命性的消费新观念——消费增值,旨在让您的每一笔消费都焕发出前所未有的价值! 长久以来,我们的消费习惯似乎总是单向的:花钱,…

量化交易研究报告#13

核心公式 通过对 HS300 相对强弱指标值变化规律的梳理,我们制定如下的交易法则: (1)计算指标的 20 日均值变化,以及 20 日标准差; (2)20日均值1倍标准差作为上阈值,20…

亚信安全发布2024年第24期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周,勒索软件LockBit涉嫌对美国一家生产乙烯基产品的公司(Homeland Vinyl)进行攻击。LockBit声称他们已窃取了销售、库存、财务交易数据及其他公司记录,并声明将于2024年7月19日公开这些被盗信息。本周全球共监…

Web开发:<br>标签的作用

br作用 介绍基本用法常见用途注意事项使用CSS替代 介绍 在Web开发中&#xff0c;<br> 标签是一个用于插入换行符的HTML标签。它是“break”的缩写&#xff0c;常用于需要在文本中强制换行的地方。<br> 标签是一个空标签&#xff0c;这意味着它没有结束标签。 基本…

07:串口通信二

串口编程 1、与波特率之相关的寄存器2、PCON寄存器3、SCON寄存器4、配置的代码分析5、向PC发送一段字符串6、PC机向单片机发送字符控制LED1灯的亮灭 1、与波特率之相关的寄存器 如图&#xff0c;与串口通信相关的寄存器主要是SCON和PCON寄存器。 2、PCON寄存器 SMOD&#xff1…

杰发科技AC7801 —— __attribute__指定地址存储常量

const uint8_t usFlashInitVal[] __attribute__((at(0x08002800))) {0x55,0x55,0x55,0x55,0x55};//定位在flash中&#xff0c;0x00030000开始的6个字节信息固定 注意7801的地址在8000000之后 如地址选0x00000800烧录时候报错 不知道是不是atclinktool的bug&#xff0c;使用_…

数据结构-C语言-排序(2)

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 1.1-排序定义&#xff1a; 排序就是将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。(注&#xff1a;我们这里的排序采用的都为升序) 1.2-排序分…

【Datawhale AI夏令营】电力需求预测挑战赛 Task01

整个学习活动&#xff0c;将带你从 跑通最简的Baseline&#xff0c;到了解竞赛通用流程、深入各个竞赛环节&#xff0c;精读Baseline与进阶实践 文章目录 一、赛题背景二、赛题任务三、实践步骤学习规划分析思路常见时序场景 task01codecode 解读 一、赛题背景 随着全球经济的…

Python酷库之旅-第三方库Pandas(026)

目录 一、用法精讲 65、pandas.bdate_range函数 65-1、语法 65-2、参数 65-3、功能 65-4、返回值 65-5、说明 65-6、用法 65-6-1、数据准备 65-6-2、代码示例 65-6-3、结果输出 66、pandas.period_range函数 66-1、语法 66-2、参数 66-3、功能 66-4、返回值 6…

SoulApp创始人张璐团队以AI驱动社交进化,平台社交玩法大变革

在科技飞速发展的今天,人工智能正逐步渗透到社交媒体的各个环节,赋能全链路社交体验。AI的引入不仅提升了内容推荐的精准度,使用户能够更快速地发现感兴趣的内容,还能通过用户行为预测,帮助平台更好地理解和满足用户需求。此外,AI驱动的虚拟助手和聊天机器人也正在改变用户互动…

MATLAB quiver矢量图 设置colorbar

给三维矢量图按照不同高度设置箭头颜色 figure clf X surfaceuz(:,1); Y surfaceuz(:,2); Z surfaceuz(:,3); hold onzcolor jet; % qquiver3(X,Y,Z,X,Y,W) for i 1:length(surfaceuz)quiver3(X(i),Y(i),Z(i),X(i),Y(i), Z(i),...Color,zcolor(floor((Z(i) - -0.1) * 2…

在Mac上免费恢复误删除的Word文档

Microsoft Word for Mac是一个有用的文字处理应用程序&#xff0c;它与Microsoft Office套件捆绑在一起。该软件的稳定版本包括 Word 2019、2016、2011 等。 Word for Mac 与 Apple Pages 兼容;这允许在不同的操作系统版本中使用Word文档&#xff0c;而不会遇到任何麻烦。 与…

【异常解决】Unable to start embedded Tomcat Nacos 启动报错

Unable to start embedded Tomcat Nacos 启动报错解决方案 一、背景描述二、原因分析三、解决方案 一、背景描述 Windows 本地启动 Nacos&#xff08;2.2.0&#xff09; 服务&#xff0c;控制台报错 Unable to start embedded Tomcat。 报错信息&#xff1a;Unable to start …

AI绘画入门实践|Midjourney 提示词的使用技巧

提示词长短 尽可能做到简洁明了。 提示词很短 MJ 出图的随机性更高&#xff0c;创造的内容更有想象力&#xff0c;更适合创意发散的图像生成。 a dog 提示词很长 MJ 出图会更加精准&#xff0c;但描述太过详细&#xff0c;有可能出现AI理解不到位的情况。 越到后面的提示词&…