Postman 高级用法指南

Postman是一款强大的API接口测试工具,有许多不容易发现的好用的功能,下面简单介绍其中一部分功能。详细内容可以参考文档,官方还有视频教程,非常方便入手。后续本博客会持续提供一些Postman使用的细节技巧,方便大家用Postman进行接口调试。

Navigating Postman

作为一个跨平台的API测试工具,Postman有Win/Mac/Linux客户端,还有浏览器扩展程序。不过官方建议使用客户端,主要有以下优点:

  • 自带cookie支持:请求可以使用同一域名下的cookie;
  • 内置代理支持:可以用来转发请求,分析请求流量;
  • 自定义请求头:不必受限于Chrome中对于请求头的限制;
  • 内置控制台:在控制台可以查看请求的详细信息

简单来说,postman 做的事情就是模拟浏览器发送请求,接受响应。使用Postman可以模拟任何浏览器发出的请求,可以自由地构造请求地址,请求方法,请求内容,Cookies等。Postman的响应内容包括完整的响应头,响应时间,响应大小,cookie等内容。

此外,postman还提供如下方便功能:

  • Debugging and logs:可以在控制台对postman的请求进行调试,特别是如果有pre-request或者test script时,使用控制台可以方便debug。原生postman可以通过CMD/CTRL + ALT + C打开控制台。
  • Generate code snippets:将当前请求导出为各种版本的请求代码,比如python,js,curl等,方便用命令行测试;
  • Proxy:如果本机不能直接访问服务端,可以在Settings-Proxy-Using custom/system proxy设置代理;
  • Capturing HTTP requests:有时候用手机访问服务端时,我们可能需要借助fiddler来查看HTTP请求。postman也可以做相同的工作,只需要将postman作为代理转发HTTP请求即可。
  • Certificates: 如果服务端要验证客户端证书,可以在Settings-Certificates-Add Certificate配置证书;

Environments and globals

我们在构造API请求时,经常会在多个地方使用相同的值,比如相同的请求域名,一些固定的参数值。这时候如果使用变量来保存相应的值,然后在需要使用该值的地方用变量来代替会带来不少好处,比如要改变这些值,只用在变量的定义地方作出改动即可。

[图片上传失败...(image-bae891-1511323262976)]Postman是一款强大的API接口测试工具,有许多不容易发现的好用的功能,下面简单介绍其中一部分功能。详细内容可以参考文档,官方还有视频教程,非常方便入手。后续本博客会持续提供一些Postman使用的细节技巧,方便大家用Postman进行接口调试。

[站外图片上传中...(image-8fc151-1511323254532)]

作为一个跨平台的API测试工具,Postman有Win/Mac/Linux客户端,还有浏览器扩展程序。不过官方建议使用客户端,主要有以下优点:

  • 自带cookie支持:请求可以使用同一域名下的cookie;
  • 内置代理支持:可以用来转发请求,分析请求流量;
  • 自定义请求头:不必受限于Chrome中对于请求头的限制;
  • 内置控制台:在控制台可以查看请求的详细信息

简单来说,postman 做的事情就是模拟浏览器发送请求,接受响应。使用Postman可以模拟任何浏览器发出的请求,可以自由地构造请求地址,请求方法,请求内容,Cookies等。Postman的响应内容包括完整的响应头,响应时间,响应大小,cookie等内容。

此外,postman还提供如下方便功能:

  • Debugging and logs:可以在控制台对postman的请求进行调试,特别是如果有pre-request或者test script时,使用控制台可以方便debug。原生postman可以通过CMD/CTRL + ALT + C打开控制台。
  • Generate code snippets:将当前请求导出为各种版本的请求代码,比如python,js,curl等,方便用命令行测试;
  • Proxy:如果本机不能直接访问服务端,可以在Settings-Proxy-Using custom/system proxy设置代理;
  • Capturing HTTP requests:有时候用手机访问服务端时,我们可能需要借助fiddler来查看HTTP请求。postman也可以做相同的工作,只需要将postman作为代理转发HTTP请求即可。
  • Certificates: 如果服务端要验证客户端证书,可以在Settings-Certificates-Add Certificate配置证书;

Environments and globals

我们在构造API请求时,经常会在多个地方使用相同的值,比如相同的请求域名,一些固定的参数值。这时候如果使用变量来保存相应的值,然后在需要使用该值的地方用变量来代替会带来不少好处,比如要改变这些值,只用在变量的定义地方作出改动即可。

[站外图片上传中...(image-b86277-1511323254532)]

Postman定义了4类变量,极大地方便了构造请求以及对结果进行测试:

  • Global: 全局变量,postman中所有请求都可以访问或者修改;
  • Environment: 构造请求时可以选择使用某个Environment,这样就可以访问或者修改该Environment下的所有变量;
  • Local: 脚本中定义的变量,只对脚本的当前作用域有用;
  • Data: 只有在使用 Collection Runner 的时候,可以通过导入 Data Files 来构造当前测试集中用到的数据。

就像程序中的变量一样,这里的变量也是有优先级,如果在Environment中有和Global重名的变量,会优先使用Environment中变量。上面4个变量的优先级由上到下依次减弱。

在postman中使用变量有着很多意想不到的好处,比如:

  1. Collection Runner中通过Data file来构造不同的测试数据,方便快速进行大量不同请求数据的测试;
  2. 可以在不同请求中传递值,比如在一个请求中产生流水号,将其设置为某个变量的值,下一个请求即可使用该变量值。

Scripts

Postman 内置了Node.js的运行时环境,可以执行JS脚本。这样就带来了很多激动人心的好处,比如构建动态请求参数,编写强大的测试用例等。Postman中的Scripts分为2类:

  • pre-request script: 在发送请求之前执行的脚本,一般用来构建请求参数;
  • test script: 在获取相应之后执行的脚本,一般用来做测试。不过需要注意,测试脚本运行在Sandbox环境,内置了许多JS库支持,方便进行测试。

[站外图片上传中...(image-d76aac-1511323254532)]

Postman的Sandbox环境十分强大,比如:

  1. 通过提供 postman.setNextRequest("request_name") 实现,可以很方便地在 Collection 中控制请求的执行路径;
  2. 提供了一系列内置接口,方便对环境变量,请求或者相应内容进行访问;
  3. 提供了 CryptoJS 库,可以方便地进行加解密操作;
  4. 提供了 tv4 库,可以对 Json Scheme进行测试;JSON Schema 定义了如何基于 JSON 格式描述 JSON 数据结构的规范,进而提供数据校验、文档生成和接口数据交互控制等一系列能力。

Collections runs

Collections 是一系列请求的集合,postman通过collection来支持构建请求工作流,自动化测试,请求的导入导出,持续集成等功能。Collection 支持以下功能:

  • Sharing collections:可以将Collection中的请求导出分享给其他人;
  • Data formats:Postman可以导出环境变量,甚至可以将请求和环境变量等一起打包为一个Json,方便迁移所有的请求数据。

Collection的一大用处就是一次执行其中所有的请求,这就是所谓的 collection run

collection runner

在执行collection run时,有很多配置选项,主要如下:

  • Using environments in collection runs: 可以指定一个 Environment,这样collection中的请求可以使用其中的变量;
  • Working with data files: 可以导入一个Data File,里面存放测试中用到的Data变量。可以存放很多不同的Data变量,这样迭代跑多次Collection时,每次使用不同的数据;
  • Running multiple iterations: 可以配置迭代的运行Collection中的请求,对接口的稳定性进行测试。此外配合Data files,也可以对接口的正确性进行测试;
  • Building workflows:默认情况下会顺序执行Collection中的请求,不过可以通过setNextRequest()来更改请求的执行流程。
  • Debugging a collection run: Collection中的请求执行后,会有可视化的执行结果展示,可以方便进行调试,此外,也可以通过控制台来进行调试。
  • Sharing a collection run: 整个Collection Run也是可以导出,可以在其他平台进行运行;
  • Command line integration with Newman: 导出Collection Run后,可以在命令行使用 newman 运行。
  • Integration with Travis CI: 可以将 newman 和 Travis CI集成,配置好持续性集成,指定自动运行测试用例的时机。

其他功能

1. 文件上传

图形界面端,Collection 中的请求不支持POST文件上传,不过在导出Collection后,可以在json文件中配置文件路径,然后使用 newman 进行文件上传。详细可以参考Postman官方博客:Using Newman to run collections with file-post requests

不过文件上传时必须指定文件路径,不能用变量代替,也不能通过Data Files来设置不同的文件,不是很方便。所以我给官方提了 Issue,目前该功能已经纳入 Feature,有望在后续版本中实现该功能。这里就不得不赞一下Postman的社区支持了,基本上有任何问题,只要在官方Issue上提出,基本很快就会有Postman的工作人员提供支持。

(备注:本文所有图片均来自Postman Doc)

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,799评论 25 707
  • Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,...
    奥利奥龙卷风阅读 4,206评论 2 9
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,773评论 6 342
  • (一) PS界面 (二) 菜单栏目 菜单栏目主要就是命令,面板上的东西都可以在窗口里面找到 选项栏目主要就是对于菜...
    我拥抱着我的未来阅读 294评论 1 1