Postman札记

Postman简介

使用炫酷的Postman HTTP请求构建器创建和发送任何HTTP请求。编写你自己的测试用例来验证响应数据、响应时间以及其他更多的。

Create and send any HTTP request using the awesome Postman request builder. Write your own test cases to validate response data, response times, and more!
–Postman官方介绍

安装:

  1. Postman是基于Chrome浏览器开发的App,可以从Chrome应用商店获取,或者地址栏输入chrome://apps/
    旧版本的Postman是作为一个标签页出现,新版本的会新开窗口
    在线安装需要翻墙,最新的离线安装包可邮件Postman开发团队索取,以下是笔者2016-07-01得到的邮件回复:

    The Chrome app is not available offline. We have native Mac and Windows apps, however.
    The Mac app can be downloaded from https://www.getpostman.com/apps.
    The Windows app is still in beta -
    https://dl.pstmn.io/download/latest/win?arch=64 (64 bit)
    https://dl.pstmn.io/download/latest/win?arch=32 (32 bit)
    Hope this helps,
    Cheers,
    Abhijit,
    Founder, Postman

界面功能-请求:

界面图

1.左侧边栏主要是导入、收藏请求,可以整理成目录:

a. Import:

导入,格式一般为Json;

b. Runner:

能够自动化执行一个或多个收藏文件夹下面的请求;

c. 收藏

收藏的请求(保存之后)有编辑、复制、删除等操作;

2.右侧请求编辑区

a.请求方法:

常用的有POST和GET,一般API文档中给出,或者Fiddler、花瓶等抓包工具中获取;

b.URL:

请求地址,可以从接口文档或者抓包工具获取;

c.Params按钮:

对于从抓包工具获取的接口,使用该按钮能自动生成form-data样式的请求主体;

d.Send按钮:

发送请求;

e.Save按钮:

能够将当前状态下的接口保存至收藏夹的某一个文件夹下面。

3.Header:

若服务器对接口header有要求,就需要在这里进行配置,比如数据类型等,Postman能够支持绝大多数的header类型,受限于Chrome,一小部分不支持。
fiddler-header
fiddler-header2

4.Body:请求主体

接口中提交的各种数据均在这里配置,支持文本和文件,能够支持从环境变量获取,能够生成不同语言的请求代码:

a.form-data:

键值对样式,左侧是字段名,右侧是字段值,跟x-www-form-urlencoded没有太大区别:
在每一个字段右侧能够选择数据类型(文本或者文件);可以点击右侧Bulk Edit较为方便的进行复制和粘贴。
fiddler-body

b.raw:

未解析的请求主体,支持多种语言:
fiddler-raw

5.Pre-request Script:

前置执行脚本,会在请求发出之前执行,一般用于获取时间戳或者随机值,支持JS:
Fiddler-pre

6.Tests:

请求发出之后对返回值进行验证,在此处编写测试代码,给环境变量赋值:
Fiddler-test

7.code按钮:

Postman神器之一,编写完成之后的接口数据可以生成任意语言,直接能够执行代码,且支持绝大多数语言:
Fiddler-code

界面功能-Response:

1.Body:

接口返回主体,根据不同的返回数据可以手动选择解析格式:
response-body

2.Tests:

返回测试脚本验证情况:

进阶:Pre-request Scipt、Tests以及环境变量的使用:

1.Pre-request Script:

Tips:代码编辑区右侧有红色的提示方法,包含了所有Postman内中的方法,使用很方便。
栗子1:如果接口需要使用请求发送时的时间戳,就需要在请求发出之前生成时间戳:

1
2
// 获取时间戳
var time_stamp = Date.parse(new Date())/1000;

获取时间戳之后接口中是拿不到数据的,此时应该将生成的时间戳存进环境变量:
postman.setEnvironmentVariable("time_stamp", time_stamp);
之后在请求Body中的相应字段的value中使用环境变量
Fiddler-pre1
Fiddler-pre2

2.Tests:

(Response Body)中的数据作为后续数据使用:
很多基于登录数据的接口,需要在登录接口之后获取当前用户的用户信息(user_name、user_id、token等),此时需要在Tests中添加相应的语句存储到环境变量。
Tips:代码编辑区右侧有红色的提示方法,包含了所有Postman内中的方法,使用很方便。
栗子2:首先解析ResponseBody:

1
2
3
4
5
var responseJSON;
try {
responseJSON = JSON.parse(responseBody);
tests["code equals 0"] = parseInt(responseJSON.code) === 0;
catch (e) { }

之后将所需的数据存储到环境变量:

1
2
3
4
postman.setEnvironmentVariable("__access_token", responseJSON.access_token);
postman.setEnvironmentVariable("__refresh_token", responseJSON.refresh_token);
postman.setEnvironmentVariable("__token_type", responseJSON.token_type);
}

之后就能在需要鉴权参数的接口中使用调用环境变量中的数据。
Fiddler-pre1

3.环境变量:

作为临时存储数据的仓库,能够将前置脚本以及接口返回的数据暂存,以供调用。
Fiddler-pre1

4.简单的测试脚本:

1
2
3
4
5
6
7
8
try{
var jsonData = JSON.parse(responseBody);
tests["The code is: " +jsonData.code] = jsonData.code === 0;
tests["The msg is: " + jsonData.msg] = jsonData.msg === "ok";
tests["Status code is: " + responseCode.code] = responseCode.code === 200;
}
catch (e) { }

Tips:
将解析返回数据主体的语句放在try中防止解析失败造成异常;
右侧提示方法中的示例,可以直接在此基础上修改称自己的测试脚本:

1
2
var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.value === 100;

Ethan wechat
欢迎扫一扫关注~
坚持原创技术分享,您的支持将鼓励我继续创作!