Postman的简单使用

1、Postman的简单介绍

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

  • 一、支持定义http请求分组
  • 二、支持配置不一样环境变量
  • 三、支持路径参数、请求头参数、请求实体参数的录入
  • 四、支持编写脚本预处理请求(Pre-request Script)
  • 五、支持编写脚本断言响应结果及其余测试(Tests)

Postman使用-01

2、Postman的变量

一、做用

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

二、分类

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

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

三、设置入口

3.一、可视化设置

变量编辑入口-01
变量编辑入口-02

3.二、编码设置

变量操做语法后端

3、Postman的脚本执行

一、脚本设置入口

1.一、分类

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

1.二、设置入口

1.2.一、collection级别

脚本编辑入口-01

脚本编辑入口-02

1.2.一、folder级别

脚本编辑入口-03

脚本编辑入口-04

1.2.一、request级别

脚本编辑入口-05

1.三、执行时间

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

4、Postman脚本经常使用语法

一、变量操做

<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")

二、异步发送非当前请求

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

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

三、响应断言

3.一、请求结果断言

根据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.二、文本响应实体断言

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

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.三、JSON响应实体断言

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

3.四、响应头断言

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

3.五、响应耗时断言

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

四、响应实体由XML转JSON

var jsonObject = xml2Json(responseBody);

五、自定义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;
});

六、参考文档

Postman Sandbox API reference

5、使用举例

一、问题场景

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

二、面临问题

若是切换到Postman做为接口调用工具,须要具有如下条件:

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

若是Postman容许,具有如下条件更好:

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

三、解决方法

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

四、关键图示

解决图示-01
解决图示-02
解决图示-03
解决图示-04
解决图示-05
解决图示-06

相关文章
相关标签/搜索