之前虽然自己也有用postman来测试api,但都只是最简单输入url,发送,查看结果,大部分时候跟使用浏览器差不多,偶然在简书首页看到一篇 API开发神器-Postman , 深感还是得对自己使用的工具多琢磨一下,兴许你就发现了宝贝,大大加快开发测试速度了;

这里没有打算写全面的教程,只对我之前没了解的环境设置/变量使用以及对返回结果进行过滤等操作进行记录,详细的文档请看 官网说明 ,另外,我的版本是 4.3.2;

环境(Environmen)

在开发不同阶段,可能存在不同的环境(对我碰到的就是服务器地址/api版本/header信息等不一样),比如 debug环境和release环境,每次切换环境测试的时候都得重新配置url信息,非常麻烦耗时,还容易出错;

如果能把这些配置信息抽象成类,不同环境对应不同的实例,初始化设定后,在request请求中通过类/实例成员变量来引用不同的值,从而在需要的时候通过切换环境来选择不同的配置信息,这样不是很方便吗?

postman就提供了这样的功能: 

若已配置过环境,可以通过选择下方的环境名称来切换,request中的变量就会使用该环境中的值了…(这是废话==)

点击上图下拉菜单中的 Manage Environments ,打开管理环境管理页面如下: 

图中的 app_dev 等环境是我之前已经配置好的,初始是空白界面,点击下方的 add 按钮来新增一个: 

Environment Name 中随便填入便于自己记忆的名称即可 
key 和 value 就填入自己需要的变量名和值即可,可以填入多对;

tip: 如果不同环境的参数基本相同,直接复制一份已配置好的环境信息,再进行修改即可: 

变量说明

在postman中,变量有全局变量(GlobalVariable)和环境变量(EnvironmentVariable)之分,环境变量就是上面提到的在环境管理中设置的变量,全局变量可以在不同环境(No environment也算一种环境吧)都可以使用…(好吧,我又啰嗦了,就是生命周期不一样,一个局部的一个全局的); 

环境变量除了通过上面介绍的配置环境时进行设定外,还可以通过代码进行设置,postman使用JavaScript,从下图的 Pre-request Script 中通过右侧的 SNIPPETS 中预定义的常用脚本可以看到变量的设置方法:

postman.setEnvironmentVariable("variable_key", "variable_value");
postman.setGlobalVariable("variable_key", "variable_value");
  • 1
  • 2
  • 1
  • 2

变量引用

官网 Environment and global variables 部分有说明; 
通过 {{variable_name}} 来使用,可以在 url地址栏,Headers,Pre-request Script,Tests中引用: 

在request之后,这些 {{}} 部分会被替代成实际的值,另外,Pre-request Script 中的脚本会在执行request请求前先运行,因此可以在里面预先设置些所需变量,而 Tests 中的脚本是在request返回后执行的,可以对返回信息进行提取过滤,举个栗子,获取如下返回信息中的 user_id 值:

// 假设服务端返回的Body内容如下:
{
"token": {
"user_id": "2079876912",
"access_token": "26A90E317DBC1AD363B2E2CE53F76F2DD85CB172DF7D813099477BAACB69DC49C794BAECEDC68331",
"expires_at": "2016-06-22T12:46:51.637+0800",
"refresh_token": "26A90E317DBC1AD3CD1556CF2B3923DD60AEBADDCBC1D9D899262A55D15273F735E407A6BEC56B84",
"mac_key": "4FAhd4OpfC",
"mac_algorithm": "hmac-sha-256",
"server_time": "2016-06-15T12:46:51.649+0800"
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在 Tests 中对 user_id 值进行提取并赋值成全局变量:

// 判断是否存在 'user_id' 值
tests["Body contains user_id"] = responseBody.has("user_id");
if(tests["Body contains user_id"]){
// 将返回信息解析成对象
var responseData = JSON.parse(responseBody);
tests["value_user_id"]=responseData.token.user_id
// 设置全局变量
postman.setGlobalVariable("user_id",tests["value_user_id"]);
}else{
// globals["test_user_id"] 是我在 `Pre-request Script` 中预定义好的一个常量值
postman.setGlobalVariable("user_id",globals["test_user_id"]);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

另外,在界面下方返回信息中的 Tests 标签中,代码内使用 tests[props_name] 括起来的属性都会显示结果: 

结合以上所说,我会新建个request用于初始化各种全局变量,运行完以后再来运行具体的api请求测试

Postman Interceptor

下载地址 
这个插件我有挺喜欢,配合postman很方便,可以直接拦截浏览器中的request,记录到postman中的 history列表中,所需的header等信息也都一并处理好了,着实简单:

Postman Interceptor helps you send requests which use browser cookies through the Postman app. 
It can also send headers which are normally restricted by Chrome but are critical for testing APIs. The Interceptor makes this process painless. Something that would have required a proxy earlier can now be achieved without any installation steps or extra configuration.

实际试试,可以发现,浏览器的各种请求都被记录到了postman中的history列表中了,同时,请求所需的各种头信息也都被整理好了,很方便: 

附带说一下 runner ,也是挺好用的一个工具,对于整理归类过的api collections ,可以批量运行,检查api是否运行正常,具体不再说明,看动态图: 

转载自:http://blog.csdn.net/zxz_tsgx/article/details/51681080

postman-变量/环境/过滤等的更多相关文章

  1. postman使用--环境变量

    变量 postman提供了变量设置,有四种变量类型本地变量全局变量环境变量 数据变量 什么是环境变量 环境变量指在不同环境,同一个变量值随着环境不同而变化,比如在测试环境时,host为:dev.pos ...

  2. postman(环境设置)

    1.点击小齿轮进入到环境变量添加页面,点击add添加环境变量 2.新增环境输入变量名称和变量值 3.添加成功 4.接口中设置变量,切换环境进行传参 5.调用环境变量断言 调用环境变量中的phone变量 ...

  3. postman切换环境

    原文链接:https://www.cnblogs.com/nicole-zhang/p/11498384.html 通常会有多个测试环境,针对同一个接口来说,可能只是域名有变化,此时可以添加postm ...

  4. Linux 下Shell变量,环境变量的联系与区别

    Linux下Shell变量,环境变量的联系与区别 by:授客 QQ:1033553122 1.  简介 linux下的变量可分成两种:Shell变量和环境变量. Shell变量,又称本地变量,包括私有 ...

  5. postman 添加环境变量 并 读取变量 作为参数 传入,跑整个场景

    上篇文章 写了 postman 基本使用 和 检查点. 这篇 记录一下 多个测试用例组成的一个场景下. 如何通过读取变量跑完整个场景. 因为有些场景 的用例是彼此关联的. 所以通过参数来实现. 如 我 ...

  6. postman设置环境变量

    postman属于一键式安装,不多赘述 1.设置环境变量 点击设置进入 添加环境变量 添加成功可选择 应用{{}}包住变量名即可 地址变化更换即可

  7. postman设置环境变量、全局变量

    讲postman环境变量设置之前,先讲一个小插曲,环境变量.全局变量的区别在于Globals,只能用一组,而Environmen可以设置多组,所以我更喜欢设置环境变量 1.环境变量-Environme ...

  8. postman 用环境变量Environment实现多服务器版本

    现存问题 在测试API期间,往往存在多种环境,对应IP地址(或域名也不同) 比如: Prod: http://116.62.25.57/ucows 用于开发完成发布到生产环境 Dev: http:// ...

  9. postman设置环境变量,实现一套接口根据选择的环境去请求不同的url

    一个系统,有本地,开发,测试,生产等不同的环境,如果写不同的url配置多套会比较麻烦,可以设置不同的环境实现不同的url之间的切换.配置之后如下: 第一步: 第二步: 添加环境变量 ps::不同的环境 ...

  10. Postman配置环境变量添加token

    postman测试接口时,每次都需要获取token以后,复制到接口里,特别复杂. 这里通过把获取token接口的返回数据添加到环境变量,然后将环境变量名设置在其他接口的token中,获取一次token ...

随机推荐

  1. pomise的简单用法

    1.then的基本简单用法,当异步获取完数据后就会自动执行then的方法 function runAsync1(){ var p = new Promise(function(resolve, rej ...

  2. Yii2系列教程二:MVC,Forms和Layouts

    上一篇文章我们简单地实现了Yii2框架安装和Hello World,而在这一篇文章当中,我们会带着好奇之心去探索一下在Yii2中的几个重要的元素组成:MVC,Forms和Layouts. 本文的目标是 ...

  3. Python 获取图片格式及像素宽高信息

    # coding: utf8 from PIL import Image img = Image.open("img.jpg") print img.sizeprint img.f ...

  4. 蓝鲸安装Agent

    1. APPO 所在机器(在 app 运行所在机器) 必须能通过 ssh 登陆到 Agent 机器2. Agent 所在机器可以访问到 zk 的端口3. 支持 Linux/Windows/AIX 操作 ...

  5. Android基础新手教程——4.1.2 Activity初窥门径

    Android基础新手教程--4.1.2 Activity初窥门径 标签(空格分隔): Android基础新手教程 本节引言: 上一节中我们对Activity一些主要的概念进行了了解,什么是Activ ...

  6. Java 9的14个新特性总结

    Java 9 包含了丰富的特性集.虽然Java 9没有新的语言概念,但是有开发者感兴趣的新的API和诊断命令. 我们将快速的,着重的浏览其中的几个新特性:  模块化系统–Jigsaw 项目 模块化是一 ...

  7. 你是那种仅仅看《XXXXX从入门到精通》的程序猿吗?

    我一開始又要废话一番了. 实际上上了大学以后.你常常会在网上,在和别人的交流里,在老师的课堂上.反复听到一些书,比方黄仁宇的<万历十五年>.王小波"时代三部曲".村上春 ...

  8. Java 1.7 ReentrantReadWriteLock源代码解析

    因为本人水平与表达能力有限,有错误的地方欢迎交流与指正. 1 简单介绍 可重入读写锁时基于AQS实现的,典型的用法如JDK1.7中的演示样例: class RWDictionary { private ...

  9. activiti入门3排他网关,并行网管,包括网关,事件网关

    网关用来控制流程的流向 网关能够消费也能够生成token. 网关显示成菱形图形,内部有有一个小图标. 图标表示网关的类型. 基本分支 首先 利用 流程变量  写个带有分支的一个基本流程 流程图: wa ...

  10. Oracle,跳出游标循环

    1,跳出游标的循环,不执行遍历了. 方法一:goto for c_row in 游标 loop if 条件 then dbms_output.put_line('测试跳出循环'); goto brea ...