postman+newman+jenkins持续集成

news2025/1/8 6:28:12

今天为大家带来的是postman+newman+jenkins进行API接口测试的持续集成:

一. postman测试实战

postman测试API接口是通过JavaScript脚本完成测试中的功能, 在请求发起前后实现测试操作.

常用功能: 请求前脚本(pre-request scripts)设置请求前置操作如设置变量等

请求后在tests模块中,对状态码, 响应头, 响应正文等信息进行断言操作

通过console 控制台进行调试

pre-request scripts:

var key=pm.environment.get("key");

获取响应json数据.

pm.response.json();  

二.测试套件与数据驱动实战

Runner批量运行测试脚本及组件说明:

 

nvironments 指定测试套件使用的环境变量

Iterations 表示测试套件执行的循环次数

Delay 表示接口请求之间, 每次接口发出后,延时的时间长度

Save responses 表示是否需要记录日志

Data 表示是参数化数据驱动

Keep variable values表示是否在执行过程中保留对环境变量的修改

通过Runner 跑完所有接口后, 点击接口名字, 就可以看到需要的所有log日志, 接口请求的四大要素 method url headers body, 状态码 响应头 响应正文

在Runner当中使用 test_data.txt, Data点击Select File, 浏览到模块中, 选择文件格式为text/csv ,   Preview 预览, 注意编码格式为utf-8.

Postman常用的断言方式有, 通过:

// 断言数据文件中期望的结果与实际结果中的返回数据一致

pm.test("断言id为: " + data.userid, function(){

var jsonres = pm.response.json();

pm.expect(jsonres.result[0].id).to.eql(data.userid); // expect(期望)

});

// 断言HTTP协议响应状态码

pm.test("断言响应状态为: 200", function(){

pm.response.to.have.status(200);

});

// 断言期望响应文本中包含字符串数据

pm.test("断言返回数据中包含token字段", function(){

pm.expect(pm.response.text()).to.include("token");// expect(期望)

});

iterations变为了多次, 次数与csv数据 行数对应   参数名必须与文件中行名一一对应.

三.newman命令行运行与持续集成实战

postman使用newman插件完成命令行执行postman脚本, 因此如果需要用命令行运行脚本, 需要先安装Newman.

官方文档: 

https://www.npmjs.com/package/newman

 安装Nodejs

官网下载地址: http://nodejs.cn/download/, 下载之后直接运行安装.安装之后确认环境变量中已经添加了node所在目录,否则手动添加.

在cmd中通过 node -v 和 npm -v 确认node环境是否已经搭建成功

 

提示: 如果提示npms 不是内部或外部命令, 也不是可运行的程序, 则需要手动去配置环境变量,在 PATH当中.

完成nodejs 安装之后, 在命令行输入: 

 npm install newman  -g  安装newman

也可以通过如下镜像源地址进行安装:

npm install -g newman --registry=https://registry.npm.taobao.org

newman 运行postman collections

安装好newman之后, 可以通过命令行执行postman测试集中的脚本

官方文档: 

https://www.npmjs.com/package/newman

postman命令行运行文档:

https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/

newman执行:

1. 导出collections

在collection选项菜单中选择export,  导出为json文件

2. newman执行 collection 导出的json文件

命令行输入newman run 导出的json文件名 通过newman命令行运行测试集

newman run D:/DK.postman_collection.json

3,怎么样把环境变量以及数据驱动加入进来. 还需要了解newman的一些常用的参数

Newman 常用参数

-e , --environment 使用环境变量文件或url

使用时, 首先在环境变量中通过导出功能将环境变量导出, 然后用如下命令引用.

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json

-g,  --global 使用全局变量文件或URL

类似环境变量的使用, 在使用前, 先导出全局变量文件, 再通过-g 指定文件使用

-d , --iteration-data 指定使用的数据驱动文件

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt

-n 指定测试集循环次数iterations

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3

newman -h     # newman测试报告

newman提供的测试报告中, 常用的包括cli, json和html 三种格式,

可以通过-r 或者 -reporter 命令指定所用格式

cli 格式为在cmd客户端呈现的报告模板, newman默认使用该格式

json格式可以导出json格式的报告, 通过-r html进行设置

并加上 --reporter-html-export 参数指定报告生成的路径

同时使用cli,json两种格式: 通过-json 设置导出报告格式.

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3 -r cli,json --reporter-json-export D:\test_result.json

html格式可以导出html格式的报告, 通过 -r html进行设置, 并加上 --reporter-html-export参数指定报告生成的路径.

先安装html报告模板:

npm install newman-reporter-html -g --registry=https://registry.npm.taobao.org

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3   -r  html  --reporter-html-export D:\test_result.html

在已经实现newman通过命令行方式执行postman测试集的基础上, 可以方便的在jenkins上完成持续集成构建

四. 构建任务完成Jenkins定时执行Newman运行测试集

创建自由风格项目后, 在构建触发器里, 配置定时构建选项, 指定任务定时执行, 五个参数分别代表 分 时 天 月 星期 的周期维度

Build Triggers

在构建时, 添加构建步骤选择执行 windows批处理命令, 将newman命令写入即可

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3   -r  html  --reporter-html-export D:\test_result.html

构建触发器(build triggers) 选择定时构建, 00 03 * * *  分 时 天 月 星期, 执行windwos批处理命令,  执行依据编辑好的bat脚本中的内容, 有乱码, 需要改环境变量.

变量名: JAVA_TOOL_OPTIONS

变量值: -Dfile.encoding=UTF-8

修改完环境变量后, 重启jenkins, 重新构建, 即可.

 

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

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

相关文章

UE多实例云渲染之Nginx代理

Nginx的Https代理 我们实现UE像素流时大部分使用的是http协议,但是某些时候前端由于某些功能问题需要使用https的协议(如前端调用本地摄像头)需要使用https协议。如果此时在内部使用http请求就会被block掉。其中一种简单的方案就是通过修改浏览器的安全…

SOLID设计原则

1. SRP单一职责原则 任何一个软件模块都应该有且仅有一个被修改的原因。 反例是一个类的三个方法给三个部门提供服务,而这三个方法有一些公共子方法,很有可能因为A部门的代码变更改动,导致B、C部门调用的方法出现意料之外的结果。 2. OCP开…

nginx请求转发webSocket

原由 1.我有一个socket服务,用ip访问是成功的,但是老板说用这个不行,要用nginx请求转发,转发内网地址到某个域名 2.但是我改成了指定域名后失败,因为我没有配置nginx.conf 3.接下来一起学习下,怎么在ngin…

华硕电脑怎么录屏?华硕电脑录屏功能在哪?简单实用教程来了

​有很多小伙伴对如何录制华硕电脑的屏幕知识和信息知之甚少。现在大家都想多了解一些关于华硕电脑怎么录屏的相关知识和信息。所以今天小编收集了一些关于如何录制华硕电脑屏幕的知识和信息,与大家分享。 华硕电脑怎么录屏方法一:使用Windows自带的录屏…

day45 PHP反序列化POP链构造魔术方法原生类

前言 #知识点: 1、什么是反序列化操作?-格式转换 2、为什么会出现安全漏洞?-魔术方法 3、反序列化漏洞如何发现? -对象逻辑 4、反序列化漏洞如何利用?-POP链构造 补充:反序列化利用大概分类三类 -魔…

重磅来袭!共600页,又一分牛逼的Python文档面世!

前言 本文是为了帮大家快速学习 Python 中知识点,这套资料涵盖了诸多学习内容:面试题,教材视频,实战资料,电子书籍。 相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不…

150行代码写个低配版WPS?:手把手教你实现+附完整源码

前言:通过一个简单实例来实现Java的GUI编程,对于新手较为友好,且有一定的实用性,正在学习Java的同学看过来!!包教包会,如有疑问欢迎私信询问! 目录 实例展示 一、GUI编程基本概念 …

java面向对象----抽象类 接口

目录 抽象类与抽象方法 概念 抽象类应用 接 口 概念 接口的特点: 接口应用举例 Java 8中关于接口的改进 内部类 如何声明局部内部类 局部内部类的特点 匿名内部类 总结 抽象类与抽象方法 概念 随着继承层次中一个个新子类的定义,类变得越…

机器学习之多元线性回归

1、多元线性回归模型:定义:具有多个特征的线性回归模型 多元线性回归模型,见下图: 多元线性回归总结(参数、模型、损失函数、梯度下降算法)见下图:【注意:梯度下降算法每次都是同时…

Vue2中过滤器的用法详解

目录 一、过滤器的概念 二、过滤器的使用位置 三、过滤器的分类 1、全局过滤器 2、本地过滤器 四、过滤器应用实例 1、使用过滤器实现省略号 2、使用过滤器处理时间戳 五、Vue3中已废弃过滤器 过滤器是vue中的一个特性,作用是用于对文本进行格式化的作用。…

动态与静态获取元素

🌵知识点简介 静态获取(querySelectorAll)时,选出的所有元素的数组,不会随着文档操作而改变; 动态获取(getElementById)时,选出的所有元素的数组,会随着文档的…

Paddle 点灯人 之 Tensor

Paddle 点灯人 之 Tensor 文章目录Paddle 点灯人 之 TensorPaddle点灯人介绍Tensor介绍Pytorch和Paddle的相似之处创建张量Tensor图片/文本转TensorDataLoader不需要加ToTensorPaddle中的 Tensor 的属性形状 shape数据类型(dtype)Tensor 的设备位置&…

高压放大器驱动压电器件工作原理

高压放大器在实际应用中经常会进行电容性负载驱动,对压电器件进行驱动,那么工作原理是什么呢,下面就请安泰电子来为我们讲解一下。 高压放大器是提高信号电压的装置,当负载是谐振电路或者耦合电路的时候,要求特定频率范…

Mybatis源码解析(十):一级缓存和二级缓存

Mybatis源码系列文章 手写源码(了解源码整体流程及重要组件) Mybatis源码解析(一):环境搭建 Mybatis源码解析(二):全局配置文件的解析 Mybatis源码解析(三):映射配置文件的解析 Mybatis源码解析(四):s…

转行学python?到底值不值

大学毕业后相当迷茫,不知道做些什么,于是跟着潮流去学了python,当年2w多买的python教程,三个月的时间成功上岸,现在用不着了,文末有领取方式。 面对当前情况,让众多职场人开始紧张,…

《棒球大联盟2nd》:青春赛场·棒球1号位

茂野大吾是个有着现役职业棒球选手的父亲的小学生。他因为向往曾经在棒球大联盟活跃的父亲吾郎,而开始了在少年棒球队“三船海豚队”的棒球训练。但是,因为背负着茂野二世这个称号的压力,无法发挥出原来的水平,以至于1年还不到就放…

基于java+springmvc+mybatis+jsp+mysql的整体衣柜定制系统

项目介绍 管理员后台: 功能:个人中心、客户管理、导购管理、店长管理、厂家管理 客户后台: 功能:个人中心、款式信息管理、款式预订管理、材料信息管理、材料预订管理、定制订单管理、安装信息管理、订单评价管理、联系客户管理 …

我发现了一个React、Vue等所有前端框架都存在的隐秘Bug?

什么 Bug? 昨天有个朋友请教了我一个问题,她在使用原生的 Details 元素封装一个手风琴组件。但是无论如何都不能按照预期工作。 起初我认为是她水平比较差,代码写的有问题。但是她一再向我保证绝对不是她的问题。所以我就抽出时间帮她看了一…

DP2515国产带SPI接口CAN总线控制器芯片兼容替代MCP2515/MCP2515-I/ST

目录什么是CAN?DP2515简介芯片特性参考原理图什么是CAN? CAN是控制器局域网络(Controller Area Network, CAN)的简称,是如今是国际上应用最广泛的现场总线之一,是ISO国际标准化的串行通信协议。在汽车产业中,出于对安…

项目管理必备,教你如何制作甘特图

甘特图是项目管理中常用的工具,又被称为横道图。 由表格和条形图组成,左侧显示项目中所有的任务及时间,右侧一条状进度条显示项目每个任务的进度。 因为它极其好用,不仅在比较大型和复杂的项目中被广泛使用,在日常工…