前言:

请各大网友尊重本人原创知识分享,谨记本人博客:南国以南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 正确使用姿势的更多相关文章

  1. xpath轴的正确使用姿势

    网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解. 背景--python中使用xpath:  ----------------------------------- ...

  2. 高版本jquery尤其是1.10.2的版本设置input radio设置值的最正确的姿势。

    $("input:radio[name="analyshowtype"]").attr("checked",false); $(" ...

  3. NSnotificationCenter 正确使用姿势, removeObject 探索

    最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...

  4. 微信H5中静默登录及非静默登录的正确使用姿势

    在微信中打开网页且需要调用微信登录接口时,微信官方给我们提供了两种登录调用方式:静默登录和非静默登录:但是官方文档中却没有说明在何种情况下使用静默登录,何种情况下使用非静默登录,所以在这里,我想将之前 ...

  5. Java日志正确使用姿势

    前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名 ...

  6. MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集

    MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...

  7. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

  8. 玩转java多线程(wait和notifyAll的正确使用姿势)

    转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...

  9. Gradle的依赖方式——Lombok在Gradle中的正确配置姿势

    写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道. 很多人在项目依赖中直接这样写 1 compile "org.p ...

随机推荐

  1. DVWA high 带token暴力破解

    一.选择Pitchfork模式.选择要爆破的参数 二.配置Options 找到optiops(设置)把线程设为1 配置Grep=Extract,点添加 点击Refetch response 获取返回的 ...

  2. 从文件下载视角来理解Web API

    一.问题源起 从Web From过来的人应该会比较熟悉以下下载文件的代码: [HttpPost] [Route("Download")] public void Download( ...

  3. 深入理解Java虚拟机-垃圾收集算法

    一.判断对象是否可进行回收 1.引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用的.但是主流的 ...

  4. 什么是基于Java的Spring注解配置? 给一些注解的例子?

    基于Java的配置,允许你在少量的 Java注解 的帮助下,进行你的大部分Spring配置而非通过XML文件. 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Sp ...

  5. mysql行锁、表锁。乐观锁,悲观锁

    锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...

  6. 设置IE的自动导包器

    一丶打开IE设置: 快捷键:Ctrl+Alt+S 二丶将Add unambiguous imports on the fly 选中即可: 三丶设置好后别忘了"OK":

  7. MOS管驱动电路,看这里就啥都懂了

    一.MOS管驱动电路综述在使用MOS管设计开关电源或者马达驱动电路的时候,大部分人都会考虑MOS的导通电阻,最大电压等,最大电流等,也有很多人仅仅考虑这些因素.这样的电路也许是可以工作的,但并不是优秀 ...

  8. Android:Unable to find explicit activity class报错

    错误:Unable to find explicit activity class 原因:没有给activity在AndroidManifest.xml中注册 解决办法: 在AndroidManife ...

  9. uniapp中生成二维码(附代码和插件)

    wxqrcode.js文件:  https://github.com/Clearlovesky/-js-jq-/tree/master/wxqrcode // 引入二维码库 import QR fro ...

  10. uni-app中遇到的跳转问题

    最近在使用uni-app时,遇到的一个问题,使用uni.navigateTo跳转时在H5端是可以的,在小程序端报 fail webview count limit exceed 这个错,解决办法如下: ...