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接口测试实用小点的更多相关文章

  1. PostMan接口测试(很全面的接口测试教程)

    一:理论部分 1. 前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上 ...

  2. Maven在Eclipse中的实用小技巧

    前言     我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...

  3. ANDROID开发实用小工具

    分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...

  4. PHP 常用函数库和一些实用小技巧

    PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载   包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等   文件读取函式 //文件读取函式 function ...

  5. Postman接口测试初探

    Postman接口测试 有两种安装方式: 1)Chrome插件(https://www.getpostman.com/).安装完成后,它会在chrome的应用中,如下图 2)通过下载Native ap ...

  6. postman接口测试工具3.0版本的坑

    今天用postman接口测试工具3.0版本被坑,找了半天,原来postman这个新版本有个坑啊 下面的get参数,第一行不管你填不填,都是无效的,可能是postman的一个bug吧

  7. Vim实用小技巧

    Vim实用小技巧 一些网络上质量较高的Vim资料 从我07年接触Vim以来,已经过去了8个年头,期间看过很多的Vim文章,我自己觉得非常不错,而且创作时间也比较近的文章有如下这些. Vim入门 目前为 ...

  8. #postman接口测试系列:基本操作总结

    最近项目需要接口测试,所以选择了不少工具对比,最终决定使用postman进行接口测试,这个工具目前使用比较简单,但是有点还是比较多的,如下: 方便切换不同的环境进行接口测试工作,而不用修改变量或代码 ...

  9. [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件

    项目小组的几个成员都是学地下水和环境的,对于GIS懂得不是很多,于是把一些我们经常用到的mapgis实用小功能做成帮助文档,方便大家使用,发布共享! 1.整理好EXCEL文件(注意X,Y坐标的正确性( ...

  10. postman(九):postman接口测试脚本集成到jenkins

    本篇的目的是实现使用jenkins远程执行postman接口测试脚本 准备工作:一台linux服务器(可以用虚拟机搭建一个),linux服务器上安装好node.js.newman,部署好jenkins ...

随机推荐

  1. 再见了 Pages

    再见 Pages 之前一直用 GitHub Pages + Hexo 写博客,但是这段时间又出现了无法访问的问题,非常闹心,于是想把博客迁移到博客园,继续简简单单地写东西 挺感激 Pages ,这个博 ...

  2. OpenCV常量值含义表

    色彩空间转换常量 常量值 说明 cv2.COLOR_BGR2GRAY 从 BGR 色彩空间转换到 GRAY 色彩空间 cv2.COLOR_RGB2GRAY 从 RGB 色彩空间转换到 GRAY 色彩空 ...

  3. KingbaseES 咨询锁

    传统的事务性锁,读/写会自动加锁,读/写完成后会自动解锁(加解锁机制在细节上复杂),这是一种隐式的锁机制.对于加锁后的并发控制,也就是默认的写不阻塞读,是通过MVCC机制解决的.这种锁完全不需要人为干 ...

  4. windows系统设置状态栏时间显示读秒

    windows系统设置状态栏时间显示读秒 要实现的效果如下图: 一.打开注册表 WIN+R输入[cmd]之后输入[regedit]回车 二.修改注册表 在注册表地址栏输入: HKEY_CURRENT_ ...

  5. 内容分发策略与 SEO 优化指南

    内容分发 内容分发是指通过各种媒介分享.发布或传播内容给受众的过程.这些媒介可以包括不同的渠道,例如社交媒体平台(Facebook.Twitter.LinkedIn.朋友圈.微博.小红书.B 站.抖音 ...

  6. 国产化改造就用 Java Solon,v2.7.3 发布

    Java Solon 是什么框架? 是一个可平替 Spring 生态的 Java 应用开发框架.从零开始构建(非 java-ee 架构),有自己的标准规范与开放生态.(历时七年,具备全球第二级别的生态 ...

  7. JS-鼠标点击出现爱心

    新建js文件,将代码复制到js文件中,然后在HTML文件中引入js,这样鼠标点击后就可以出现爱心 // js.js !function(e, t, a) { function r() { for (v ...

  8. Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载

    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦.这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了. 下面是一个名为Comp ...

  9. Android 开发入门(5)

    0x07 数据存储 (1)共享参数 SharedPreferences a. 用法 用法 SharedPreferences 是 Android 的一个轻量级存储工具,采用的存储结构为键值对的方式 共 ...

  10. mysql 必知必会整理—组合查询与全文搜索[九]

    前言 简单整理一下组合查询与全文搜索. 正文 什么是组合查询,就是我们常说的交并补集. 直接上例子. 举一个例子,假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的 ...