前言:

请各大网友尊重本人原创知识分享,谨记本人博客:南国以南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. linux鸟哥学习笔记

    Linux学习笔记 Linux档案权限和目录配置 目录如果没有x权限,则无法进入该目录 改变文件和属性 chgrp: 改变档案所属的群组 chown:改变档案的拥有者 chmod:改变档案的权限,SU ...

  2. C++ 并发编程1

    一个简单的并发编程的举例 #include <iostream> #include <thread> using namespace std; void hello(){ co ...

  3. 微服务部署 docker-compose

    1.docker-maven-plugin 介绍 在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很 ...

  4. vue渐进式?

    小到可以只使用核心功能,比如单文件组件作为一部分嵌入:大到使用整个工程,vue init webpack my-project来构建项目:VUE的核心库及其生态系统也可以满足你的各式需求(core+v ...

  5. Struts2的Action中获取request对象的几种方式?

    通过ActionContext.getSession获取 通过ServletActionContext.getRequest()获取 通过SessionAware接口注入 通过ServletReque ...

  6. zookeeper 负载均衡和 nginx 负载均衡区别 ?

    zk 的负载均衡是可以调控,nginx 只是能调权重,其他需要可控的都需要自己写插件:但是 nginx 的吞吐量比 zk 大很多,应该说按业务选择用哪种方式.

  7. Spring配置连接池和 Dao 层使用 jdbcTemplate

    1.Spring 配置 c3p0 连接池 (1)导入jar包(Maven项目) <dependency> <groupId>com.mchange</groupId> ...

  8. LVS 工作图

    一.工作模式 1.NAT模式 -----主要是修改目标IP地址为RS的IP地址.即请求进入负载均衡器时做DNAT,响应出负载均衡器时做SNAT. 工作方式: 1)客户端请求网站,经过路由器到达负载均衡 ...

  9. ctfhub密码口令

    弱口令 进入环境 使用burpsuit抓包爆破 密码长度不一样应该密码就为他 即可找到 默认口令 进入环境一开始不懂百度借鉴原来是要看常见设备默认口令 很快就找到了 一个一个的试 即可获得答案

  10. 2015 年十佳 HTML5 应用

    前言 优秀的前端工程师戴着脚铐跳舞,究竟能把 HTML5 的体验推进到什么程度? 这些 Web apps 是我们运营云集浏览器的网上应用店一年来,我选出的十佳 Web apps.其中参考了同事们的意见 ...