Postman 的实用功能

封面图

Postman 的实用功能

前言

我是一个 Android 开发工程师,日常开发中最免不了的就是使用 Postman 进行网络调试,Postman 也很方便,URL、Header 都能设置。下面来分享几个有用的功能,来看看有没有你没用过的。

image-20200629171237658

基础使用

初次打开 Postman,就会显示上图这样的页面。需要测试一个请求的时候,新开一个 Tab,填写 URL、选择请求方式,还要按照接口的要求设置响应的 Header、Params,然后点击 Send 发送请求,观察响应。

image-20200630143346409

Collection

这就是最简单一次网络请求,我之前一直是这么用的,没有毛病。直到有一天,老大给我一个 JSON 文件,让我导入到 Postman,说是这是你后面要接手的项目的所有的网络请求。我导入之后,大概是下面这样的。老大告诉我,导入的这个就是一个 Collection,你可以在 Postman 中创建多个 Collection。

image-20200630150543167

这是我第一次接触 Collection,还是挺兴奋的,跑到一旁去研究这些接口去了,用了一阵子我发现,Collection 还可以在内部创建文件夹,用分包的形式对 Collection 里的请求进行归类整理,就像这样。

image-20200630152402689

Environment

用了没多久,我发现了一个问题,每次我访问的接口 token 变了,我就需要把每个请求的 header 中的 token 那个值改一下,这样弄太麻烦了。我就想 Postman 能不能设置全局变量,然后我只需要在一个地方更新 token,其他地方自动设置。查了一下还真有这个功能。

不过 Postman 把变量这个概念放在了 Environment 中,如果把变量看做是请求,那么 Environment 就是变量的 Collection。

image-20200630161417022

① 当前的 Environment

② 查看当前 Environment 中的值

③ 设置 Environment「可以添加、删除 Environment 或编辑其中的变量」

点击 ③ 可以打开下面这个面板,这个面板是列出当前所有的 Environment,点击每一个 Environment 的名称可以进入并编辑所属的变量。

点击 ④ 可以新建一个 Environment,并创建、编辑、删除变量;点击 ⑤ 则是直接对全局变量进行创建、编辑、删除,这里的全局的意思是在发起一个请求时不设置 Environment 也能使用的变量。

image-20200630171558981

点击上图的 ④ 或 ⑤ 都会打开一个设置参数的面板,区别就在于 ⑤ 无需设置 Environment 的名称。

image-20200630161003931

需要注意啊,如果你把变量设置在了 Environment 而不是全局的,需在发送请求之前,设置当前所使用的 Environment,点击 ① 处就能选择 Environment 了。

image-20200701144232925

我就这么用了一阵子,也没什么事,老老实实的开发我的 APP,直到测试找上门来,说不对啊,你这 App 上的数据不对啊,还有有的时候半天都没数据,那个 Loading 动画一直在转,人家 iOS 都是好的。这我哪能忍,经过我一番排查,结果发现是服务器的问题,于是我就让测试再遇到这种情况,自己用 Postman 测试一下,自己去看数据。可人家又嫌每次都得用一下 Postman 太麻烦,于是我又发现了一个 Postman 功能,Test。

Test

Test 可以对每个请求及响应执行相应的测试逻辑,比如延迟是否超过 200ms,服务器响应是否为 200 等等,测试逻辑所采用的编程语言是 JavaScript。

image-20200701145427438

每个请求都有一个 Tests 的 Tab,在 Tests 下方的编辑框中可以自行编写代码,相应的每个响应也都有一个 TestResult,在这里展示每一个 Test 的执行结果,是通过还是失败,如果是失败还有具体的原因。

下面就来简单测试一下,测试的项目是响应时间少于 200ms 和是否成功响应「是否成功响应,直接判断服务器返回的状态码是否为 200」。

image-20200701150729899

可以看到,这次的测试有一个通过,一个失败的,失败的原因是请求时间为 1891ms 高于我们设置的 200ms 的目标值。

嘿,你是不是在想测试哪些东西?Postman 都提供示例了,你看上图 Tests 编辑框右侧我框柱的区域,那是 Postman 提供的几个模板。直接拿来用就好了。如果模板不够用的,还可以自己写呢,Header 和 Body 都可以进行测试。

比如我们一般把服务器的响应规定为下面这种类型,而客户端需要先判断 status 是否正确,然后再进行取值,那么我们需要拿到 status,然后进行判断。下面就是数据示例及测试样例代码。

{
    "data": {
        "isAgency": "0",
        "token": "456789......"
    },
    "msg": "OK",
    "oK": true,
    "status": 200
}
var data = JSON.parse(responseBody)
var statusCode = data.status
pm.test("测试接口是否异常", function () {
    pm.expect(200).to.equal(statusCode)
})

还记得,我们利用 Environment 进行设置变量,然后在请求的 Header 中进行使用吗?Test 也可以对变量进行操作的。利用下面这四个方法就能对 Environment 或全局的变量进行取值和赋值操作。

pm.environment.get("variable_key");
pm.environment.set("variable_key", "variable_value");
pm.globals.get("variable_key");
pm.globals.set("variable_key", "variable_value");

这样一来,我们还可以利用,Test 来对 Token 进行自动更新,当我们检查出当前的接口返回数据正常,就把 Token 写入到 Environment 变量即可。

if (statusCode == 200) {
    var token = data.data.token
    pm.environment.set("token", token)
}

Collection Runner

这个功能也挺好,针对单个请求的,但是如果要测试很多呢?那测试人员肯定还不愿意用这个,有没有批量测试的工具呢。答案是有的,就在 Collection 里面,Collection 是一些请求的合集,它提供了一个叫 runner 的功能。

image-20200701160954937

依次点击箭头所指的图标就能进入 Collection runner 面板。

image-20200701161156537

看上图,A 区当前 Collection 所有的接口,可以选择执行范围,默认是整个 Collection,B 区则是选择的将要进行测试的接口,每个请求还可以进行拖动排序;C 区就是对整个测试的配置,比如执行几遍,每个请求间隔多少毫秒,是否保存响应等等,配置完成后就可以执行了。

image-20200701161756799

这个是测试结果,我对单个 Collection 中的单个接口进行了三次的请求。在这个页面上,也是可以对每一次的请求查看每个请求的信息,包括请求地址、Header、Response、响应 Header、响应 Body。

image-20200701162125565

而且还能导出,把单次请求结果进行导出,导出的文件也是 JSON 格式的,很方便查看。

没想到 Postman 还挺好用的哈,赶紧推荐给测试,下次数据再出问题,让他直接找后台去,还有数据摆在面前,想跑都到不掉。

对了,如果登录 Postman,Postman 还会把 Collection 和变量 Environment 保存在云端,多个设备之间会自动同步。

参考资料

  1. Test 示例及官方资料
  2. Postman log 打印
  3. Collection Run

关于我

我是一个普普通通的 Android 开发者,你可以在简书掘金,还有我的个人博客找到我。

本文封面图:Photo by Ian Schneider on Unsplash

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357