前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Postman小工具大妙用

Postman小工具大妙用

原创
作者头像
小江的学习日记
发布2024-08-10 16:38:18
1000
发布2024-08-10 16:38:18

写在前面

postman 大家都会用,但是很多人只是把它当作一个简单的http客户端。大部分时候,这就够了,因为http调用就是它的最核心的功能。

那么,这样一个“小”工具,究竟还有什么值得再说两句呢?

开发完一个restful功能,后端应该自测完毕后等待与前端联调。这个自测包括单元测试和接口测试,只要完成其中之一,都能大大减少联调的耗时,但是往往两个都没好好完成。更可能的情况是,因为接口拷贝、设值麻烦、更习惯使用图形化界面操作等原因,最终接口测试与前端联调并行。

假如你自测做的很好,那么可以再考虑一些细节,比如

  1. 使用 environment 来避免测试不同的环境时反复修改host
  2. 使用 collection runner 通过接口处理一些线上小规模数据,不用再写代码进行处理

总之,postman 提供了所见即所得、方便、快捷的一种选择,所谓技多不压身。

基本概念

UI基本结构

collections

collection 是一组请求的集合,和普通的文件夹的区别不大,完全可以一样看待。

代码语言:javascript
复制
 collection` 可以定义脚本、运行 `collection runner
 collection` 下可以继续递归创建子文件夹,这些子文件夹和 `collection` 一样可以定义脚本、运行 `collection runner

variables

variable 即变量,允许你通过引用在 collection、request、script 等处复用。引用的方式就是使用占位符,如 {{变量名}} ,这样只要修改 variable 的值,所有 {{变量名}} 的地方都会一起变更。

变量优先级

global、environment 变量可以直接在 postman 右上角配置。

collection 变量需要点击 collection > Variables 进行添加

data 变量则是来源于外部文件,一般在 collection runner 时会使用到。

local 变量则是在脚本处定义,生命周期最短。

environments

可以理解为是特殊的 variable 的集合, 因为一些变量如 url 不同环境使用的是不同的值,为了避免反复修改 variable 的值,可以将 variable 定义在 environment 里,通过右上角切换。

{{url}}/api/resource/id=3

Scripts

我们可以在 collection 、各文件夹、request 定义脚本。

脚本分为 Pre-request 和 Post-response 两类,顾名思义,不需要多加解释。

request 会先按顺序执行自身、当前文件夹、父文件夹...collection 的 Pre-request 脚本,然后执行 request ,再按相反顺序执行 Post-response 脚本。

因此, Pre-request 脚本一般负责处理加签、数据加密、数据预处理等; Post-response 脚本处理解密、测试断言等。官网 有很多案例可以参考。

回顾下前面所说的 variable 的优先级范围,可以用脚本来测试下

代码语言:javascript
复制
 // global var 'score' = 0
 // collection var 'score' = 1
 // environment var 'score' = 2
 ​
 // first request run
 console.log(pm.variables.get('score')); // outputs 2
 console.log(pm.globals.get('score')); // outputs 0
 console.log(pm.collectionVariables.get('score')); // outputs 1
 console.log(pm.environment.get('score')); // outputs 2
 ​
 // second request run
 pm.variables.set('score', 3);//local var
 console.log(pm.variables.get('score')); // outputs 3
 ​
 // third request run
 console.log(pm.variables.get('score')); // outputs 2

Collection Runner

位置:workspace 右下角、文件夹右键菜单 > Run Folder

注意事项: 免费版一个月最多只能执行 25次,还算够用。

需要特别注意的是

  1. 延迟无所谓,runner 实际执行为单线程
  2. 导入data文件后,注意使用预览功能检查下postman解析和预期是否一致
  3. 勾选 Persist responses,方便查看失败请求的响应
  4. runner 是单线程,特别大的数据不适用

Data File

支持 csv 和 json 两种格式,注意,json 格式并不是将 json 报文直接导入,举个例子,以下两种格式效果是一致的。

代码语言:javascript
复制
 id,name
 1,alice
 2,bob
 [
 {"id":"1","name":"alice"},
 {"id":"2","name":"bob"}
 ]

运行效果

实践技巧

接口快速导入导出

postman左上角的 import 功能提供了多种方式导入

只是 debug 少量接口的时候,不需要使用抓包工具,可以使用浏览器自带的开发者工具来快速导入接口。

同理,也可以使用 postman 的代码功能快速生成 curl、wget 命令。

Collection Runner

如何直接导入json报文

有的时候,为了方便,我们想要一行放一个json报文,便于 request 里直接引用,csv文件内容如下

代码语言:javascript
复制
 json
 {"id":"1","name":"alice"}
 {"id":"2","name":"bob"}

可惜,postman 会解析失败,原因是双引号和逗号在csv中都有特殊逻辑,我们可以采用如下办法解决

  1. 将原 data 文件的双引号先替换为单引号,同时前后添加双引号表明是一个数据
代码语言:javascript
复制
 json
 "{'id':'1','name':'alice'}"
 "{'id':'2','name':'bob'}"
  1. request 中的请求报文先置为空,即 {}
  2. 添加 Pre-request 脚本进行处理
代码语言:javascript
复制
 // 将修改的单引号恢复为双引号
 let s = pm.iterationData.get("json").replaceAll("'", '"');
 // 将前后多余的双引号去除,并设置为请求报文
 pm.request.body.raw = s.substring(1, s.length - 1);

如何快速收集失败的case

使用 collection runner 后,有时候会遇见部分失败的情况,但是 postman 没有提供仅重试失败数据的功能,必须自己将失败的数据单独取出来重试。

而 collection runner 提供的导出功能,并不包含请求报文和响应报文,但是导出数据可以发现包含了url和测试的名字,因此可以在这里做文章,如通过下面的做法将关键数据导出,然后再通过正则取出失败数据,再重新跑 collection runner

代码语言:javascript
复制
 pm.test(pm.iterationData.get("billCode"), function () {
     var jsonData = pm.response.json();
     pm.expect(jsonData.success).to.eql(true);
 });

响应报文解密如何展示

postman 的 response body 不能通过 post-response 脚本修改,直接输出到控制台总觉得不太方便。此时,我们可以使用 postman 的 visualize 功能来近似

代码语言:javascript
复制
 // 使用<pre>标签可以保留文本格式,当然也可以自己实现更复杂的html功能
 pm.visualizer.set('<pre>{{json}}</pre>', {
             json: decryptJson
         });

参考文献

Postman JavaScript Reference

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 基本概念
    • UI基本结构
      • collections
        • variables
          • 变量优先级
        • environments
        • Scripts
        • Collection Runner
          • Data File
            • 运行效果
            • 实践技巧
              • 接口快速导入导出
                • Collection Runner
                  • 如何直接导入json报文
                  • 如何快速收集失败的case
                  • 响应报文解密如何展示
              • 参考文献
              相关产品与服务
              云开发 CLI 工具
              云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档