PostMan接口测试实用小点
PostMan接口测试实用小点
1. 接口测试变量存取操作
在Postman中有很多地方可以存储一些变量,这里只介绍经常使用的环境变量.变量设置后,在UI界面可以通过{{变量名}}获取到对应值.
在环境变量中配置变量url = https://ct.ctrip.com
在请求地址栏配置 {{url}}/SwitchAPI/Order/Ticket/
最终发起地址为https://ct.ctrip.com/SwitchAPI/Order/Ticket/
在环境变量中配置变量
appkey=test_地心侠士_key
appsecurity=test_地心侠士_sec
请求正文(Body-> raw)配置如下JSON
{
"appSecurity":"{{appsecurity}}",
"appKey":"{{appkey}}"
}
最终发起时,请求正文会替换成如下内容
{
"appSecurity":"test_地心侠士_key",
"appKey":"test_地心侠士_sec"
}
所以,我们可以通过改变环境变量值,来修改请求相关的内容,下边一段代码是获取当前环境变量值,并拼接一个字母A,在重新放回环境变量中
// ahutor 地心侠士
var env_appkey = pm.variables.get("appsecurity");
env_appkey = env_appkey +"A";
pm.environment.set("appsecurity", env_appkey);
2 常用接口测试
2.1 先获取Ticket再获取业务数据
这种情况,就是利用环境变量做中转,在获取到Ticket以后,解析响应数据,并把最新的token存回环境变量中.
A. Ticket请求正文配置
{
"appSecurity":"{{appsecurity}}",
"appKey":"{{appkey}}"
}
A. Ticket请求响应信息
{
"Status": {
"Success": true,
"ErrorCode": 0,
"Message": "调用成功。"
},
"Ticket": "6629ebc42653b0e43449b962"
}
A. PostMan Tests脚本区域直接编写js脚本,存储Ticket响应信息
// ahutor 地心侠士
var jsonData = pm.response.json();
pm.environment.set("Ticket", jsonData.Ticket);
B. 业务接口请求正文配置,这里会使用上一个接口的Ticket
{
"Auth": {
"AppKey": "{{appkey}}",
"Ticket": "{{Ticket}}"
},
"OrderID": "31015905161",
"JourneyNo":"",
"SearchType": "1"
}
2.2 业务请求动态添加签名
很多接口为了防止,请求数据被篡改,都要求在请求参数中添加签名参数.这些签名值都有一定算法处理.这个时候也可用通过环境变量,结合Pre-request Script实现
需要添加签名正文配置
{
"approveScenario": "",
"corpId": "地心侠士",
"orderId": "312056399256",
"orderStatus": "Paid",
"productType": "HotelMember",
"sign": "{{sign}}"
}
请求发起前脚本,修改环境变量值
// ahutor 地心侠士 获取请求正文值,注意这里是原始值
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=reqData.orderId
let orderStatus=reqData.orderStatus
let productType =reqData.productType
// 一个有意思小游戏,地心侠士,欢迎微信搜索试玩
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 = CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
// 这里使用了集合变量和环境变量一样
pm.collectionVariables.set("sign", SHA1.toUpperCase());
2.3 通过Runer实现接口批量调用
某些情况下,要批量跑一些数据,也可使用postman处理,讲数据文件这里成csv文件,然后直接再Runner中上传,然后从接口集合中拉去一个集合过来,选取一个接口,就可以实现通过数据驱动接口调用.
数据文件
| 序号 | 订单号 | 订单状态 |
|---|---|---|
| 1 | 31295399256 | Paid |
| 2 | 31295399257 | Paid |
| 3 | 31295399258 | Dealt |
请求正文
注意{{订单号}} 和 {{订单状态}} 和数据文件列头一一对应
{
"approveScenario": "",
"corpId": "地心侠士",
"orderId": "{{订单号}}",
"orderStatus": "{{订单状态}}",
"productType": "HotelMember",
"refundType": null,
"sign": "{{sign}}",
"statusIDs": null
}
请求前置脚本(Pre-request Script),通过pm.iterationData获取数据行数据
// ahutor 地心侠士
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=pm.iterationData.get("订单号")
let orderStatus=pm.iterationData.get("订单状态")
let productType =reqData.productType
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 = CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
pm.collectionVariables.set("sign", SHA1.toUpperCase());
3 总结
PostMan这个接口测试工具,提供常规的接口测试,还提供接口mock,支持代理抓包,功能还是蛮多的.在数据控制方面,提供后置和前置脚本,可编程性也强.接口可以直接转换成不同语言的代码,这个也很实用. 平时记录一些开发过程的小知识点,欢迎关注我的公众号[小院不小],也欢迎添加QQ:464884492直接交流

闲暇之余,做了一款有趣耐玩的消除类微信小游戏地心侠士,有兴趣可到微信搜索地心侠士玩玩,感谢支持
PostMan接口测试实用小点的更多相关文章
- PostMan接口测试(很全面的接口测试教程)
一:理论部分 1. 前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上 ...
- Maven在Eclipse中的实用小技巧
前言 我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
- PHP 常用函数库和一些实用小技巧
PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载 包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等 文件读取函式 //文件读取函式 function ...
- Postman接口测试初探
Postman接口测试 有两种安装方式: 1)Chrome插件(https://www.getpostman.com/).安装完成后,它会在chrome的应用中,如下图 2)通过下载Native ap ...
- postman接口测试工具3.0版本的坑
今天用postman接口测试工具3.0版本被坑,找了半天,原来postman这个新版本有个坑啊 下面的get参数,第一行不管你填不填,都是无效的,可能是postman的一个bug吧
- Vim实用小技巧
Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...
- #postman接口测试系列:基本操作总结
最近项目需要接口测试,所以选择了不少工具对比,最终决定使用postman进行接口测试,这个工具目前使用比较简单,但是有点还是比较多的,如下: 方便切换不同的环境进行接口测试工作,而不用修改变量或代码 ...
- [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件
项目小组的几个成员都是学地下水和环境的,对于GIS懂得不是很多,于是把一些我们经常用到的mapgis实用小功能做成帮助文档,方便大家使用,发布共享! 1.整理好EXCEL文件(注意X,Y坐标的正确性( ...
- postman(九):postman接口测试脚本集成到jenkins
本篇的目的是实现使用jenkins远程执行postman接口测试脚本 准备工作:一台linux服务器(可以用虚拟机搭建一个),linux服务器上安装好node.js.newman,部署好jenkins ...
随机推荐
- 记录--为什么推荐用svg而不用icon?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 使用背景: 1.因为svg图标在任何设备下都可以高清显示,不会模糊.而icon会在显卡比较低的电脑上有显示模糊的情况 2.svg图标在页面 ...
- 快速上手系列:HTML
一 HTML 基本元素 基本结构 <html> <head> <meta http-equiv="Content-Type" content=&quo ...
- KingbaseES V8R6集群部署案例之---openEuler系统脚本部署故障
案例说明: 在openEuler系统下通过脚本方式部署KingbaseES V8R6集群,脚本执行过程中,加载vip失败.本次故障问题,主要是因为openEuler系统shell和脚本的不兼容引起. ...
- 花了100块大洋搞懂 ipv6的用户如何访问ipv4 服务器
大家好,今天蓝胖子花了100多块搞懂了 ipv6的用户如何访问ipv4 服务器,将收获与大家分享下. ipv4和ipv6的协议栈不同,这意味着,其对应的ip包的封装和解析不同,那么只支持ipv4的机器 ...
- MySQL访问控制和用户管理
访问控制 你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权.这就是所谓的访问控制,管理访问控制需要创建和管理用户账号. 多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表: ...
- Python企业面试题1 —— 基础篇
1. b.B.KB.MB.GB的关系? b ---- 位(bit) B ---- 字节(一个字节等于8位) 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB ...
- #树上启发式合并,trie#JZOJ 5363 生命之树
分析 考虑按位处理, 如果熟悉dsu的话可以发现这道题能够用dsu做, 再用两个trie分别维护该位为0或1的字符串, 重儿子可以按照子树字符串的总长计算 代码 #include <cstdio ...
- 1.NCC算法实现及其优化[基础实现篇]
NCC算法实现及其优化 本文将集中探讨一种实现相对简单,效果较好的模板匹配算法(NCC) \[R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x', ...
- HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求
随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...
- MogDB/openGauss数据库package关键字的两种用法
MogDB/openGauss 数据库 package 关键字的两种用法 本文出处:https://www.modb.pro/db/237701 package 关键字在 MogDB 数据库里有两种用 ...