Postman的简单使用

37次阅读

共计 3073 个字符,预计需要花费 8 分钟才能阅读完成。

一、Postman 的简单介绍

熟悉 HTTP 协议,能容易的配置一个简单的 http 请求,这里就不介绍了。下面是 Postman 的主要功能:

  • 1、支持定义 http 请求分组
  • 2、支持配置不同环境变量
  • 3、支持路径参数、请求头参数、请求实体参数的录入
  • 4、支持编写脚本预处理请求(Pre-request Script)
  • 5、支持编写脚本断言响应结果及其他测试(Tests)

二、Postman 的变量

1、作用

Postman 用于注入请求地址、请求参数、请求实体、请求头中占位符 {{}} 中的值。

2、分类

postman 的变量配置,变量类型分为一下 3 种。每一个变量包含 key 值,初始化值,当前值三个可编辑项。

变量类型 作用范围 占位符取值优先级 脚本编辑 导入导出
普通变量 当前单个请求 最高 支持 不支持
环境变量 启用下的所有请求 支持 支持
全局变量 所有请求 最低 支持 支持

3、设置入口

3.1、可视化设置


3.2、编码设置

见变量操作语法

三、Postman 的脚本执行

1、脚本设置入口

1.1、分类

以请求为导线,分为 Pre-request ScriptTests
以请求组合分类为导线,分为 collection 级别、folder 级别和 request 级别。
以上两种分类的组合共有 6 个脚本设置入口。

1.2、设置入口

1.2.1、collection 级别

1.2.1、folder 级别

1.2.1、request 级别

1.3、执行时间

  • 1、Pre-request Script在请求前执行
  • 2、Tests在响应后执行
  • 3、collection 级别在 folder 级别前执行,folder 级别在 request 级别前执行
时间线(上先下后顺序) l 类别
请求接口前 Pre-request Script(collection 级别)
请求接口前 Pre-request Script(folder 级别)
请求接口前 Pre-request Script(request 级别)
请求接口
请求返回后 Tests(collection 级别)
请求返回后 Tests(folder 级别)
请求返回后 Tests(request 级别)

四、Postman 脚本常用语法

1、变量操作

<div id=” 变量操作语法 ”></div>

变量类型 set 值语法 get 值语法 清除语法
普通变量 pm.variables.set("key", "value") pm.variables.get("key") pm.variables.unset("variable_key")
环境变量 pm.environment.set("key", "value") pm.environment.get("key") pm.environment.unset("variable_key")
全局变量 pm.globals.set("key", "value") pm.globals.get("key") pm.globals.unset("variable_key")

2、异步发送非当前请求

异步发送 Get 请求 https://postman-echo.com/get

pm.sendRequest("https://postman-echo.com/get", function (err, response) {console.log(response.json());
});

3、响应断言

3.1、请求结果断言

根据 HTTP 状态码断言

pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
pm.test("Successful POST request", function () {pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

根据响应状态描述文字断言

pm.test("Status code name has string", function () {pm.response.to.have.status("Created");
});

3.2、文本响应实体断言

断言文本响应结果包含某个字符串

pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

断言文本响应实体匹配字符串

pm.test("Body is correct", function () {pm.response.to.have.body("response_body_string");
});

3.3、JSON 响应实体断言

pm.test("Your test name", function () {var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

3.4、响应头断言

pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});

3.5、响应耗时断言

pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});

4、响应实体由 XML 转 JSON

var jsonObject = xml2Json(responseBody);

5、自定义 JSON 校验规则

var schema = {
  "items": {"type": "boolean"}
};

var data1 = [true, false];
var data2 = [true, 123];

pm.test('Schema is valid', function() {pm.expect(tv4.validate(data1, schema)).to.be.true;
  pm.expect(tv4.validate(data2, schema)).to.be.true;
});

6、参考文档

Postman Sandbox API reference

五、使用举例

1、问题场景

公司软件项目作前后端分离,有独立的后台接口。后台接口开发过程避免不了接口测试。
由于安全性设计,请求接口需要进行参数签名。公司内部已提供简单的客户端工具,封装了签名过程,调用接口主要写接口地址、接口方法名、业务参数三中数据。但还存以下问题:
<span style=”color: red”>客户端工具不能记录历史请求,复用历史请求</span>

2、面临问题

如果切换到 Postman 作为接口调用工具,需要具备以下条件:

  • a、登录请求后,需要记住 Token
  • b、所有业务接口,需要自动带上 Token
  • c、对请求参数加工,附加上系统参数
  • d、对请求参数进行签名(这里使用 MD5)

如果 Postman 允许,具备以下条件更好:

  • e、支持一处编写脚本进行参数处理,每处复用

3、解决方法

问题序号 解决方法
a 编写 Tests 脚本,存储 Token 到环境变量
b 使用 Postman 请求参数占位符功能,请求前自动从环境变量获取并注入
c 同问题 b 的解决方法
d 编写 Pre-request Script 脚本,进行参数签名。MD5 使用到内置函数 CryptoJS.MD5()
e 基于 JavaScript 的封装,提供通用 JS 脚本作为一个 collection 级别的变量,在不同的请求的 Pre-request Script 脚本中使用 eval 函数进行引入

4、关键图示






正文完
 0