Postman 正确使用姿势
前言:
请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i
简介:
Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果, 从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。 它主要是用来模拟各种HTTP请求的(如:get/post/delete/put..等等),Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。
背景:
当我们使用Postman做接口测试时,不免某些接口请求前需要获取token参数,验证请求是否有效。
问题引申:当我们获取到token后需要手动添加到请求头里面,一旦token过期了,需要重新获取token,需要手动替换请求头中的token。周而复始麻烦的很!!!
解决思路:设置Postman中全局变量,将参数返回值token设置全局变量,便于其他接口调用
Test 简介
在 postman 中封装了我们常见的断言(Tests),当然 Tests 除了可以作为断言,还可以当做后置处理器
- 获取当前接口的响应,传递给下一个接口
- 控制多个接口间的执行顺序
一、【登入接口】获取token
1.1 设置全局变量
设置全局参数,添加请求【登入接口】的请求参数
1.2 调用全局参数
二、【查询接口】并入token
2.1 【查询接口】token验证
2.2 【登录接口】中使用Tests语句自动添加环境变量
- //把返回值解析成json字符串
- var res = JSON.parse(responseBody)
- //参数填充
- postman.setEnvironmentVariable("authorization",res.value.token);
- //简写
- //pm.environment.set("authorization", res.value.token);
- //自动设置值
- //postman.setGlobalVariable("authorization",res.value.token)
发送请求运行后,再次查看【登入请求】,全局参数已自动添加token值
2.3 【查询接口】中引用参数值
引用参数值,实现每执行【登入接口】请求,完成token自动赋值替换
Tests 中常用方法
- //1、设置环境变量
- postman.setEnvironmentVariable("key", "value");
- 或
- pm.environment.set("key", "value");
- //2、设置全局变量
- postman.setGlobalVariable("gv", "111111");
- 或
- pm.globals.set("g", "2222");
- //3、检查resonse body中是否包含某个string
- tests["结果:Body matches string"] = responseBody.has("string_you_want_to_search");
- 或
- pm.test("结果:Body is correct", function () {
- pm.response.to.have.body("response_body_string");
- });
- //4、验证Status code状态响应码是否是某个值
- tests["Successful POST request"] = responseCode.code === 200 || responseCode.code === 202;
- 或
- pm.test("Successful POST request", function () {
- pm.expect(pm.response.code).to.be.oneOf([200,202]);
- });
Pre-request Script 简介
- Pre-request Script是集合中请求发送之前需要执行的代码片段
- 请求参数中包含一个随机数或者请求header中包括一个时间戳,或者你的请求参数需要加密
一、【登录接口】请求发起前处理
使用Pre-request Script语句对密码进行加密请求
- var body_json = {
- "userCode" : "admin",
- "passwd" : "123456"
- }
- pwd = body_json["passwd"] // 获取passwd的值
- var pwd = CryptoJS.MD5(pwd).toString() // md5加密pwd变量
- body_json["passwd"] = pwd // 设置passwd为加密后的密码
- console.log(body_json)
- var body_str = JSON.stringify(body_json) // converts objects to strings
- pm.environment.set('request_body', body_str) // 把处理后的body赋值给参数request_body,在body中输入{{request_body}}
样例:
Pre-request Script 中常用方法
- // 清除全局变量
- pm.globals.unset("variable_key");
- // 清除环境变量
- pm.environment.unset("variable_key");
- // 获取全局变量
- pm.globals.get("variable_key");
- //获取一个变量
- pm.variables.get("variable_key");
- // 获取环境变量
- pm.environment.get("variable_key");
- //发送一个请求
- pm.sendRequest("https://postman-echo.com/get", function (err, response) {
- console.log(response.json());
- });
- //设置环境变量
- pm.globals.set("variable_key", "variable_value");
总结:
我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!
Postman 正确使用姿势的更多相关文章
- xpath轴的正确使用姿势
网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解. 背景--python中使用xpath: ----------------------------------- ...
- 高版本jquery尤其是1.10.2的版本设置input radio设置值的最正确的姿势。
$("input:radio[name="analyshowtype"]").attr("checked",false); $(" ...
- NSnotificationCenter 正确使用姿势, removeObject 探索
最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...
- 微信H5中静默登录及非静默登录的正确使用姿势
在微信中打开网页且需要调用微信登录接口时,微信官方给我们提供了两种登录调用方式:静默登录和非静默登录:但是官方文档中却没有说明在何种情况下使用静默登录,何种情况下使用非静默登录,所以在这里,我想将之前 ...
- Java日志正确使用姿势
前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名 ...
- MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...
- 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势) 前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...
- 玩转java多线程(wait和notifyAll的正确使用姿势)
转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...
- Gradle的依赖方式——Lombok在Gradle中的正确配置姿势
写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道. 很多人在项目依赖中直接这样写 1 compile "org.p ...
随机推荐
- DDOS攻击应用
0x01 环境 包含3台主机 attact 作为攻击方,使用Centos7.2,安装slowhttptest server 作为被攻击服务器,安装有apached windows,用于访问 serve ...
- WebGL 的 Hello World
本文整理自 div 侠于 凹凸 2022 年技术分享,简单介绍了 WebGL 画一个基础图形的流程,希望你了解之后,在使用 3d 渲染库的时候可以少点迷糊. 四种常用的页面绘图工具 关于h5页面的图形 ...
- Python_Learn,Python背景的介绍
一.计算机程序的运行方式 机器语言编写的程序可以在计算机上直接运行,而汇编语言和高级余语言写的程序(通常称为源程序)则需要"翻译"成机器语言才能运行.源程序"翻译&quo ...
- [环境部署] Windows Server 2016 配置指南 之 安装 Redis3.0
Redis是一个开源的高级key-value(键-值)缓存与存储,以高性能著称.用于做对象缓存,可以获得极佳的性能体验,可是 Redis 的官方开发团队并没有开发针对 Windows 的版本,不过还好 ...
- 27.Java 飞机游戏小项目
开篇 游戏项目基本功能开发 飞机类设计 炮弹类设计 碰撞检测设计 爆炸效果的实现 其他功能 计时功能 游戏项目基本功能开发 这里将会一步步实现游戏项目的基本功能. 使用 AWT 技术画出游戏主窗口 A ...
- 分库分表之后分布式如何保证ID全局唯一性
分库分表之后分布式如何保证ID全局唯一性 韩师学子--小倪 2018-07-21 23:35:38 8139 收藏 3分类专栏: Mysql版权 分库分 ...
- 面试问题之C++语言:mutable关键字
转载于:https://www.cnblogs.com/xkfz007/articles/2419540.html mutable关键字 mutable的中文意思是"可变的,易变的" ...
- mac终端所有命令不能用
最近一次在用终端敲命令的时候发现命令总是不执行(只有cd命令可以正常执行),返回命令未识别的错误-bash: source: command not found 相信很多朋友也会遇到类似的问题. 解决 ...
- Java如何声明变量?JS如何声明变量?
Java采用强类型变量检查,像C语言一样.所有变量在编译之前必须声明,而且不能使用没有赋值的变量.例如:int x;x=1234;char y='F';其中X=1234说明是一个整数,Y='F'说明是 ...
- springboot远程debug调试
案例代码: https://www.cnblogs.com/youxiu326/p/sb_promotion.html 1.首先去编辑器打开项目 2.打开Edit Configurations ...