Postman+Newman+Git+Jenkins+Slack 接口自动化和监控

news2025/1/16 20:04:37

目录

前言:

一、Newman 介绍:

1、简介

2、安装

3、检查

4、运行

二、Newman 命令行介绍:

newman run [options]

测试结果配置

------------------------------------分 割 线----------------------------------------------------

三、Newman 实现接口自动化流程

1、Postman 中调试接口,编写业务逻辑和 Tests

1.1 Http statuscode

1.2 特定数据校验

1.3 请求超时判断

1.4 错误判断

2、导出 json 脚本,上传到 Git;

3、Jenkins 中创建 Git 自动更新任务

3.1 Jenkins 新建一个自由风格的项目

3.2 设置 Git 地址、证书及分支

3.3 设置 Git hook

4、Jenkins 中创建 Newman API 任务

4.1 设置定时任务

4.2 构建脚本

5、Jenkins 中添加 JUnit 配置

6、Jenkins JUnit 测试结果展示

7、Jenkins 配置 Slack

8、测试结果发送到 Slack,移动端查看,效果图如下:


前言:

使用Postman+Newman+Git+Jenkins+Slack进行接口自动化和监控是一种综合的方案,可以实现自动化的接口测试、持续集成和实时监控。Postman是一个流行的API开发和测试工具,Newman是Postman的命令行工具,Git是一个版本控制系统,Jenkins是一个持续集成工具,而Slack是一个团队协作平台。

如何第一时间发现接口异常,并快速定位哪里出了问题,哪个接口 or 服务?想到接口自动化和 Slack,所以就有了以下内容

一、Newman 介绍:

1、简介

Newman 是命令行工具,Postman 是 GUI 的客户端,Newman 可执行 Postman 导出的.json 脚本文件。
Newman 运行需要先安装 NodeJS 环境(>=v4.)。
NodeJS 下载:Installing Node.js via package manager | Node.js.
因 NodeJS 可以跨平台支持,所以 Postman & Newman 也可以同时支持 Windows/Mac/Linux 等多个系统。

2、安装

通过 NPM 安装,所以上面安装 nodejs 最好也通过 NPM 安装
$ npm install newman --global;

3、检查

$ newman -v
打印出当前 Newman 版本号即安装成功。
PS:Newman 一定要用最新或 3.8.0 及以上版本,因之前版本存在一些 bug,会导致运行 Postman 脚本时报错。

4、运行

运行一个 Postman 导出的.json 文件
$ newman run path/fileName.json;

二、Newman 命令行介绍:

newman run <collection-file-source> [options]
  • -e <source>, --environment <source>
    • 指定环境变量的路径。环境变量定义和管理详见:官方详解
  • -g <source>, --globals <source>
    • 指定全局变量的路径。
  • -d <source>, --iteration-data <source>
    • 指定数据(csv)文件路径。数据文件说明:官方详解
  • -n <number>, --iteration-count <number>
    • 指定当前脚本运行次数。
  • --export-environment <path>
    • 执行结束前,导出本次执行后的环境变量到指定路径。
  • --export-globals <path>
    • 执行结束前,导出本次执行后的全局变量到指定路径。
  • --export-collection <path>
    • 执行结束前,导出本次执行后的全部脚本到指定路径。
  • --timeout-request <ms>
    • 指定请求超时时间,单位是毫秒 ms。
测试结果配置
  • -r <reporter-name>, --reporters <reporter-name>
    • 指定测试报告的导出格式
    • 目前支持四种格式:cli,json,html,junit
  • --reporter-{{reporter-name}}-{{reporter-option}}
    • 支持同时导出多种测试报告格式
    • JSON --reporter-json-export <path>
    • HTML --reporter-html-export <path>
    • JUNIT/XML --reporter-junit-export <path>
    • 上述几种测试报告 Demo 详见:官方详解

示例
newman run -e ...... -n 1 -r cli,json,junit --reporter-json-export /home/admin/temp/json_reporter_171211.json --reporter-junit-export /home/admin/temp/xml_reporter_171211.xml

注释
newman 执行指定脚本1次,并输出clijsonjunit三种测试报告,其中 json 报告保存至/home/admin/temp/json_reporter_171211.json,junit 报告保存至/home/admin/temp/xml_reporter_171211.xml

------------------------------------分 割 线----------------------------------------------------

以上部分摘自 Newman Github 官网,提了一些下面会用到的地方,还有很多地方没有提到,更全更详细详见官方文档 Newman Github

终于到重点了

三、Newman 实现接口自动化流程

整体框架如下图:

1、Postman 中调试接口,编写业务逻辑和 Tests

目前我们主要做以下四个方面的断言:

1.1 Http statuscode
if(responseCode.code === 200){...}
1.2 特定数据校验
// 先转成json格式,然后判断
var jsonData = JSON.parse(responseBody);
if(jsonData.hasOwnProperty("a")){
   tests["Parameter a is here"] = true;
}else{
   // response中不包含特定参数,打印url和response
   tests["[ERROR]KEY not in Response, please Check: " + request.url + " " + responseBody] = false;
}
1.3 请求超时判断
// 请求时长判断,大于等于limitReqTime 时报错
// limitReqTime 作为环境变量可动态配置
if(responseTime < parseInt(environment["limitReqTime"])){
   tests["Request Success"] = true;
}else{
   // 超时,打印url和实际请求时间responseTime,responseTime是工具本身提供
   tests["[INFO]Request success, BUT time is too long: " + request.url + " " + responseTime] = false;
}
1.4 错误判断
// 假设Http code 不等于200即表示有错误
if(responseCode.code === 200){
    var jsonData = JSON.parse(responseBody);
    tests["Request seccess"] = true;
}else{
    // 非200报错,打印错误信息,输出当前请求的错误信息,包括请求时长、请求数据、返回数据等
    tests["[ERROR]" + request.url + " " + responseCode.code + " " + responseCode.name + " " + responseTime + "ms Request:" + request.data + " Response:" + responseBody] = false;
}

PS:以上打印信息都使用的tests[...] = true/false,主要是为后续Newman集成 Jenkins 时,导出Junit/xml报告所用。
平时调试也可以使用console.log(...),具体调试信息可在Postman 左上角菜单->View->Show DevTools/Show Postman Console 中查看。

Tests 中流程如下

2、导出 json 脚本,上传到 Git;

这一步比较简单,就是把在 Postman 中写好的脚本(Collections)和环境变量(Environment)导出成几个.json 文件,然后上传到 Git 中,此处不赘述。
PS:不同的 API 接口执行频率根据业务可能有区别,考虑后面 Jenkins 任务执行频率设置,最好是在导出之前就将 Collections 的分组设计好,以方便后续执行。

3、Jenkins 中创建 Git 自动更新任务

3.1 Jenkins 新建一个自由风格的项目

3.2 设置 Git 地址、证书及分支

3.3 设置 Git hook

构建触发器中勾选GitHub hook trigger for GITScm polling

点击保存即可,此任务创建完毕。
任务目的:当 Git 分支中有更新时,会触发此任务构建,将最新的分支脚本 clone 到目标机器上。

4、Jenkins 中创建 Newman API 任务

4.1 设置定时任务

构建触发器中选择Build periodically,填写脚本即可
H/5 * * * *:每五分钟执行一次构建

4.2 构建脚本

构建中选择Execute shell,编写脚本。
以下是我的 Newman run 的示例脚本

WORKSPACE_PATH="/home/ubuntu/temp"
WORKSPACE_SCRIPTS="/home/ubuntu/temp/scripts"
CURRENT_COUNTRY="/zh_CN"
CURRENT_DAY=`date +%y%m%d`
REPORTER_NAME="reporter_"`date +%y%m%d`_${BUILD_NUMBER}
echo ${WORKSPACE_PATH} ${WORKSPACE_SCRIPTS} ${CURRENT_COUNTRY} ${CURRENT_DAY} ${REPORTER_NAME}

newman run ${WORKSPACE_SCRIPTS}/collection.json \
-e ${WORKSPACE_SCRIPTS}${CURRENT_COUNTRY}/environment.json \
-g ${WORKSPACE_SCRIPTS}/globals.json -n 1 -r json,cli,junit \
--reporter-json-export ${WORKSPACE_PATH}/${CURRENT_DAY}/${REPORTER_NAME}.json \
--export-environment ${WORKSPACE_SCRIPTS}${CURRENT_COUNTRY}/environment.json

说明:上面脚本中的 \ 作用是使脚本换行显示,为了方便查看,否则这么长的脚本会显示成一行,注意斜杠后一定不要留空格

重要说明:解释下上面脚本中添加--export-environment <path>的原因,Newman 执行时,本次 run 使用的变量是-e <path>-g <path>中存储的数据。如果 run 中包含多个接口,且相互间存在数据调用,比如 a 接口返回参数被 b 接口当传参调用,此时就要使用--export-environment <path>,将本次 run 后的结果变量重新导出一份新的,覆盖掉上述-e <path>-g <path>中的 <path> 即可,这样下次 run 使用的数据是最新的。否则,每次执行都会调用同一份测试数据。
此问题只在 Newman 中存在,在 Postman 中,因数据是实时写到变量中的,所以不用担心上述问题。

5、Jenkins 中添加 JUnit 配置

前置条件:Jenkins 已安装JUnit Plugin插件
构建后操作中选择Publish JUnit test result report

PS:Newman 导出的文件会保存到 Jenkins 默认工作空间下面的 newman 文件夹中, 也可以改成自定义的路径。
添加此配置时,newman run 时-r 一定要加上junit,否则没有数据 。

6、Jenkins JUnit 测试结果展示

列举下面三图举例,其它一些功能请自行查看

  • 任务页面会出现如下测试结果趋势

  • 所有任务执行情况汇总

  • 单任务中每个接口结果

7、Jenkins 配置 Slack

前置条件:Jenkins 已安装Slack Notification Plugin插件

8、测试结果发送到 Slack,移动端查看,效果图如下:

上面是在 Linux 环境上搭建的!

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

 

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

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

相关文章

2023年最新水果编曲软件FL Studio Producer Edition 21.0.3 Build 3517中文完美至尊解锁免费下载安装激活详细教程

fl studio21.0.3.3517中文解锁特别版是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;让您的计算机成为全功能录音室。除此之外&#xff0c;这款软件功能非常强大&#xff0c;为用户提供了许多音频处理工具&#xff0…

《红蓝攻防构建实战化网络安全防御体系》读书笔记

作者&#xff1a;奇安信安服团队 ◆ 1.3 红队 各个团队在演练中的角色与分工情况如下。目标系统运营单位&#xff1a;负责红队整体的指挥、组织和协调。安全运营团队&#xff1a;负责整体防护和攻击监控工作。攻防专家&#xff1a;负责对安全监控中发现的可疑攻击进行分析和研…

LiveNVR监控流媒体Onvif/RTSP功能-安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口

LiveNVR安全控制HTTP接口鉴权开启禁止游客访问开启后401 Unauthorized如何播放调用接口&#xff1f; 1、安全控制1.1、接口鉴权1.2、禁止游客访问 2、401 Unauthorized2.1、携带token调用接口2.1.1、获取鉴权token2.1.2、调用其它接口2.1.2.1、携带 CookieToken2.1.2.2、携带 U…

VUE- quill-editor 编辑器使用及自定义toobar详解

vue使用编辑器&#xff0c;这里讲解编辑器quil-editor 官网&#xff1a;https://quilljs.com/docs/modules/toolbar 1&#xff1a;安装quill-eidtor npm i quill1.3.6 --save 2&#xff1a;创建一个页面&#xff0c;再template里写入 <template><div class"…

@ConditionalOnMissingBean 不生效

还要一点需要注意的是 有顶级接口类型写接口类型,像下面这个也控制不住加载多个相同类型的Bean,因为父类最先加载,子类之间不能算作同一种类型Bean

Git详细安装教程

对于Git这块&#xff0c;我也算是个小白&#xff0c;最近在学习Git&#xff0c;所以趁此机会详细讲解一下Git的安装教程以及安装过程中遇到的问题&#xff0c;也欢迎大家对其补充&#xff0c;共同进步&#xff01; 1、下载Git Git的下载地址&#xff08;windows系统&#xff…

【STM32CubeIDE】 stm32f103的内部Flash读写,double数值读写

单片机stm32f103c8t6&#xff0c;程序存储器64Kb&#xff1a; 对其最后一页&#xff0c;第63页进行读写操作&#xff0c;空间1Kb。 写入一个32位的数据0x12345678到Flash首地址为0x0800FC00.则在Flash中存储情况如下&#xff1a; 即&#xff0c;低位地址存储数据的低位&#xf…

Python实现简易计算器

文章目录 一、需求分析1.1 功能分析1.2 性能分析 二、技术原理三、详细设计3.1 导入tkinter库3.2 定义全局变量3.3 定义添加函数3.4 定义结果函数3.5 定义清空函数3.6 创建主窗口并指定其大小和位置3.7 创建输入框3.8 创建数字和运算符按钮3.9 创建等于号和清除按钮 四、功能实…

解决打开excel时报错 “不能使用对象链接和嵌入”

问题截图 打开excel文件或者插入对象时&#xff0c;直接弹出不能使用对象链接和嵌入报错信息。 解决方法 按 winr 组合快捷键&#xff0c;打开运行&#xff0c;输入 dcomcnfg.exe 按回车确定 此时进入到组件服务管理界面&#xff0c;依次选择 组件服务-计算机-我的电脑-DOCM…

Vue+Node(Egg框架)实现文件上传保存至本地和下载文件

文章目录 1、前端代码2、后端代码 本文Node搭建的服务器是基于egg框架搭建&#xff0c;如果使用其他服务器端框架&#xff0c;可参考部分代码&#xff0c;不保证所有框架都能实现 实现效果&#xff1a; 1、前端代码 前端部分vue利用的element-ui文件上传组件&#xff0c;相关…

C++服务器框架开发11——编译调试1/cmake学习

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见&#xff1a;[C高级教程]从零开始开发服务器框架(sylar) 上一篇&#xff1a;C服务器框架开发10——日志系统1~9代码 C服务器框架开发11——编译调试1/cmake学习 目前进度ubuntu下的cmake学习简单样例同…

【论文笔记】SINE: SINgle Image Editing with Text-to-Image Diffusion Models

声明 不定期更新自己精度论文&#xff0c;通俗易懂&#xff0c;初级小白也可以理解 涉及范围&#xff1a;深度学习方向&#xff0c;包括 CV、NLP 论文标题&#xff1a;SINE: SINgle Image Editing with Text-to-Image Diffusion Models 论文链接&#xff1a;https://www.seman…

ESXI 安装win10详细步骤

在esix安装win10安装过程遇到了坑&#xff0c;发现必须对具体选项进行设置后才可&#xff0c;做下记录&#xff1a; 1、CPU设置 &#xff12;、硬盘 3、网络适配器 4、驱动器 5、虚拟机选项

LangChain大型语言模型(LLM)应用开发(四):QA over Documents

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

动手学深度学习——图像分类数据集(代码详解)

目录 1. 图像分类数据集1.1 读取数据集1.2 读取小批量1.3 整合所有组件1.4 小结 1. 图像分类数据集 这里采用Fashion-MNIST数据集 torchvision&#xff1a;torch类型的可视化包&#xff0c;一般计算机视觉和数据可视化需要使用from torchvision import transforms&#xff1a;…

kotlin forEach循环return/break

kotlin forEach循环return/break fun main(args: Array<String>) {var a mutableListOf("0", "1", "2", "3", "4")var b mutableListOf<String>()a.forEachIndexed { index, s ->if (index > 2) {retu…

CGY-OS 正式开源!

一个初中生自己编写的一个很LOW的“OS”&#xff0c;编写不易&#xff0c;不喜勿喷&#xff1b;耗时巨大&#xff0c;引用时请说明。 接下来&#xff0c;让我们一起学习使用cgyOS。 零、配置 下载本程序后&#xff0c;在Python3.10环境下使用pip安装pygame和keyboard的最新版本…

Java二叉树

目录 一、树形结构 1.1 概念 1.2 树的性质 1.3 树的表示形式 二、二叉树 2.1 概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 二叉树的遍历 2.5.2 二叉树的基本操作 一、树形结构 1.1 概念 树是一种非线性的数据结构&#xff0…

H3C-Cloud Lab-实验-DHCP中继实验

实验需求&#xff1a; 1、按照图示配置IP地址 2、配置R1为DHCP服务器&#xff0c;能够跨网段为192.168.2.0/24网段自动分配IP地址。要求分配DNS地址为202.103.24.68和202.103.0.117 3、PC3获取IP地址后&#xff0c;能够访问到192.168.1.1 实验拓扑图&#xff1a; 连接CRT 设…

Linux5.97 Ceph集群

文章目录 计算机系统5G云计算第四章 LINUX Ceph集群一、Ceph1.存储基础1&#xff09;单机存储设备2&#xff09;单机存储的问题3&#xff09;商业存储解决方案4&#xff09;分布式存储&#xff08;软件定义的存储 SDS&#xff09;5&#xff09;分布式存储的类型 2.Ceph 简介3.C…