一、什么是 Postman(前世今生)

Postman 诞生于 2013 年,一开始只是 Abhinav Asthana 着手于解决 API 测试的工具,随着这个工具的使用者和需要迅速激增,Abhinav Asthana 找了他的两个前共事 Ankit Sobti 和 Abhijit Kane 一起创立了公司 Postman Inc。

现在 Postman 曾经成为一个 API 开发的合作平台。Postman 简化了构建 API 的每个步骤,并简化了合作,这样就能够更快地创立 API。

二、应用变量

Postman 容许用户在发送和接管时应用变量,以进步工作效率和可读性(不过只能保留字符串类型的值,所以简单数据类型须要借助于 JSON.stringify()JSON.parse() 来治理)。

例如在不同运行环境中设置域名地址为变量:

Postman 反对在不同的作用域和上下文中应用变量,遵循就近准则,即如果在 GlobalEnvironment 中都有变量 name,则会取 Environment 中的 name

2.1 变量作用域实用于 Postman 中不同的场景

  • Global:全局变量能够在整个工作空间(Workspace)中应用,因为无法控制应用环境和容易造成混同,该当是不可变的全局常量,审慎应用。

    pm.globals.set("variable_key", "variable_value");pm.globals.get("variable_key");
  • Collection:汇合变量在单个汇合(Collection)中可用,往往具备通用的业务绑定属性,例如:商品属性、会员等级、通用秘钥等。

    pm.collectionVariables.set("variable_key", "variable_value");pm.collectionVariables.get("variable_key");
  • Environment:环境变量容许申请适应不同的环境,例如:本地、测试、预演和生产环境,经常用来区别申请地址。

    pm.environment.set("variable_key", "variable_value");pm.environment.get("variable_key");
  • Data: 数据变量来自内部 CSV 和 JSON 文件,当通过 Newman 或 Runner 来运行时才用到。
  • Local:局部变量只在单个申请生命周期中可用,运行实现后主动销毁。

    pm.variables.set("variable_key", "variable_value");pm.variables.get("variable_key");

2.2 编辑全局和环境变量

2.3 编辑汇合变量

2.4 应用零碎内置动静变量

Postman 内置了很多常见场景的动静变量。

备注:Postman 反对在 Pre-request Script 和 Tests 中打印调试信息,和浏览器控制台统一,能够应用命令:console.log()console.info()console.warn() 和 console.error()

console.log('以后工夫戳:', pm.variables.replaceIn('{{$timestamp}}'));console.log('随机色彩:', pm.variables.replaceIn('{{$randomColor}}'));console.log('随机 IP:', pm.variables.replaceIn('{{$randomIP}}'));console.log('随机名字:', pm.variables.replaceIn('{{$randomFullName}}'));console.log('随机职业:', pm.variables.replaceIn('{{$randomJobType}}'));console.log('随机城市:', pm.variables.replaceIn('{{$randomCity}}'));console.log('随机图片:', pm.variables.replaceIn('{{$randomImageUrl}}'));# 输入以后工夫戳:1609060090随机色彩:azure随机 IP:163.140.207.64随机名字:Chester Funk随机职业:Coordinator随机城市:Port Devinborough随机图片:http://placeimg.com/640/480

三、Postman 申请生命周期

在 Postman 中,一个残缺的 Postman 申请生命周期,除了惯例的申请(request)和响应(response),还包含前置申请脚本(pre-request script)和后置测试脚本(tests script)。Postman 蕴含一个基于 Node.js 的弱小运行态(runtime),容许用户在 pre-request script 和 tests 事件中编写 JavaScript 代码。

3.1 在前置申请(pre-request script)中应用脚本

前置申请脚本(pre-request script)顾名思义就是在申请发送之前执行的脚本。

3.2 发送申请(request)

小技巧一:在链接中应用 :id 自定义门路参数

小技巧二:Cookie 可编辑

3.3 接管一个响应(response)

小技巧:保留响应后果

保留后的后果能够作为案例或记录以便开发应用。

3.4 在测试(tests)中应用脚本

Postman 反对在申请响应后通过测试脚本来验证申请是否合乎预期。

示例一:验证响应状态码是否是 200

pm.test("Status test", function () {    pm.response.to.have.status(200);});

示例二:验证返回的业务数据(JSON)是否合乎预期

pm.test("申请胜利!", function () {    var jsonData = pm.response.json();    pm.expect(jsonData.message).to.eql('success');});

四、应用 Postman 抓包

在 Postman 应用程序中有一个内置代理来捕捉 HTTP 申请。

  1. Postman 应用程序监听客户端应用程序或设施收回的任何调用。
  2. Postman 代理捕捉申请并将申请转发给服务器。
  3. 服务器通过 Postman 代理将响应返回给客户端。

4.1 开启抓包

本机 IP 地址:

手机设置:

4.2 抓包成果

五、应用代理

代理服务器是一个应用程序或零碎,作为计算机和互联网之间的中介,或者更具体地说就是代表着客户端和服务器,向网站、服务器和其余互联网服务发出请求。

除了传递信息,代理能够做更多的事件:

  1. 记录你的机器和互联网之间的所有流量。
  2. 显示所有申请、响应、Cookie 和题目的内容。
  3. 路由流量到指定的因特网地位。
  4. 调试接口。
  5. 避免间接攻打,保障安全性。
  6. DevOps 负载平衡。

默认状况下,Postman 将应用自带的零碎代理,如果自定义了代理,优先级将高于自带的零碎代理。

六、应用 Collection Runner

汇合运行器(Collection Runner)容许以指定程序运行汇合外面的申请。Collection Runner 将记录申请测试后果,并且脚本能够在申请之间传递数据。

七、命令行脚手架 Newman

Postman 提供脚手架工具 Newman 来以命令行的形式来运行汇合(Collection)申请,其提供和 Postman 桌面端统一的性能,能够集成在工作流的 CI/CD 中。

# 装置npm install -g newman# 运行文件newman run mycollection.json# 运行 URLnewman run https://www.postman.com/collections/cb208e7e64056f5294e5 -e dev_environment.json

八、付费性能

另外 Postman 提供了很多团队合作须要的付费性能,例如:文档、监控、健康检查等。

版权申明

本博客所有的原创文章,作者皆保留版权。转载必须蕴含本申明,放弃本文残缺,并以超链接模式注明作者后除和本文原始地址:https://blog.mazey.net/1878.html