首页 > 其他分享 >Postman小工具大妙用

Postman小工具大妙用

时间:2024-08-10 16:38:17浏览次数:12  
标签:postman 妙用 Postman request collection json score 工具 pm

目录

写在前面

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

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

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

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

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

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

基本概念

UI基本结构

img

collections

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

collection` 可以定义脚本、运行 `collection runner
collection` 下可以继续递归创建子文件夹,这些子文件夹和 `collection` 一样可以定义脚本、运行 `collection runner

variables

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

变量优先级

img

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

img

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

img

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

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

environments

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

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

Scripts

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

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

img

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

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

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

// 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次,还算够用。

img

需要特别注意的是

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

Data File

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

id,name
1,alice
2,bob
[
{"id":"1","name":"alice"},
{"id":"2","name":"bob"}
]

运行效果

img

实践技巧

接口快速导入导出

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

img

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

img

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

img

Collection Runner

如何直接导入json报文

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

json
{"id":"1","name":"alice"}
{"id":"2","name":"bob"}

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

  1. 将原 data 文件的双引号先替换为单引号,同时前后添加双引号表明是一个数据
json
"{'id':'1','name':'alice'}"
"{'id':'2','name':'bob'}"
  1. request 中的请求报文先置为空,即 {}
  2. 添加 Pre-request 脚本进行处理
// 将修改的单引号恢复为双引号
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

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 功能来近似

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

参考文献

Postman JavaScript Reference

标签:postman,妙用,Postman,request,collection,json,score,工具,pm
From: https://www.cnblogs.com/whatever2code/p/18352462

相关文章

  • 一款.NET开发的AI无损放大工具
    前言今天大姚给大家分享一款由.NET开源(GPL-3.0license)、基于腾讯ARCLab提供的Real-ESRGAN模型开发的AI无损放大工具:AI-Lossless-Zoomer。Real-ESRGAN模型专注于人像和动漫图片的高质量无损放大。项目功能支持多线程处理、批量图片处理、设置选项、自定义输出格式和自定义......
  • 那年追过的开发者测试工具
    交付进度紧张,为什么还要花费精力写单元测试代码,如下是之前的笔记。写单元测试代码有什么好处为什么程序员讨厌写单元测试代码工欲善其事,必先利其器。使用Java语言交付项目时,需要掌握单元测试框架和Mock工具的使用。如下是当年交付项目过程中,使用过的测试框架和工具,可供参考......
  • Ai小说推文工具,Ai漫画工具AIGC阿祖绘唐3
    AIGC阿祖绘唐3是一款Ai小说推文工具和Ai漫画工具,它由Ai技术驱动,旨在帮助用户创作优质的小说和漫画作品。【绘唐3下载】小说推文批量Ai生成工具https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W该工具具有智能创作功能,可以根据用户输入的关键词和情节要求,自......
  • [JVM] 应用诊断工具之java命令
    0序本章对java命令的使用、最佳实践进行全方位的总结。1java命令1.0场景:查看版本方法1#java-versionjavaversion"1.8.0_261"Java(TM)SERuntimeEnvironment(build1.8.0_261-b12)JavaHotSpot(TM)64-BitServerVM(build25.261-b12,mixedmode)方法2......
  • UDP/TCP网络调试助手 NetAssist【调试工具】下载
    链接:https://pan.baidu.com/s/1QgL4XZdKNW39nFe18feBbw?pwd=1122提取码:1122–来自百度网盘超级会员V3的分享接收设置ASCII:以ASCII格式显示接收到的数据。ASCII是一种字符编码标准,用于表示文本数据。HEX:以十六进制格式显示接收到的数据。十六进制显示更适合查看和调试......
  • 太强了,这几个Python效率工具非常好用!
    为了提高效率,我们在平时工作中常会用到一些Python的效率工具,Python作为比较老的编程语言,它可以实现日常工作的各种自动化。为了更便利的开发项目,这里给大家推荐几个Python的效率工具。1、Pandas-用于数据分析Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(......
  • grep文本处理工具
    bash的特性: 变量 快捷键 命令别名 命令行展开:{},~ 管道 输入、输出重定向 编程 命令行补全 路径补全 1、文本处理命令   字符统计wc:wordcount,wc[options]FILE       -l:只显示行数      -w:只显示单词 ......
  • 软件设计:整合独立函数到工具类与通用类的权衡
    在面向对象编程中,经常会面临是否应该将独立函数整合进工具类或通用类的决策。这个问题涉及到代码组织、维护性以及可扩展性等多个方面。通过将相关的独立函数组织在一起,我们可以提高代码的可读性和可维护性,但同时也可能带来一些潜在的设计挑战。本文旨在探讨在软件设计中整......
  • OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 +
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤+源码)导 读    本文将手把手教你用Python和OpenCV搭建一个半自动标注工具(包含详细步骤+源码)。背景介绍    样本标......
  • 项目文档管理利器:2024年你必须了解的工具
    国内外主流的10款项目文档管理软件对比:PingCode、Worktile、Teambition、Tapd、Tower、Confluence、Notion、DropboxPaper、Quip、Basecamp。在面对项目管理的复杂性时,选择合适的文档管理工具可以显著提高效率和团队协作。许多团队在文档管理上遭遇混乱和效率低下,尤其是在处理......