本来打算自己写,发现有一篇写得很好的,我就不重复造轮子了。直接转载。(原文链接:https://segmentfault.com/a/1190000005055899)
安装
两种安装方式,我热衷于以 chrome 插件形式安装
Chrome 插件
Mac App
发送请求
Postman 最基础的功能就是发送 http 请求,支持 GET/PUT/POST/DELETE,还有很多我不认识的 http 方法。
通过填写 URL、header、body 等就可以发送一个请求,这对于我们平时做一些简单的测试是够用的。
如果你的应用需要用到登录验证,可以通过填写 Authorization 以满足你的需求。
另外也可以使用 Chrome 浏览器已经登录的 cookie,同步浏览器的 cookie 需要安装另一个插件 Interceptor(拦截机)。它可以在你发送请求时帮你将已经存在于浏览器的数据随 header 请求,另外它可以将浏览器的请求写到 postman 的历史中(需要开启 “Request Capture”
)。
集合不单单只有分类和存储功能,Postman 支持一键运行整个集合内的测试。
我们可以把一个请求当做一个 Test Case, 那么集合就是一个 Test Suite。
每个集合都对应一个 URL,可以通过 Share 按钮获得你的集合 URL,这个 URL 可以用于分享给你的队友,或者用于 Newman 执行。
Newman 是 Postman 的一个命令行工具,可以让 API 测试加入到你的持续集成任务上。
你可以通过右上角的下拉菜单选择环境,可以通过点击右侧的小眼睛来查看当前环境变量。
Postman 沙箱集成了几个工具库,比如 lodash、SugarJs、tv4,还有一些内置函数如 xml2JSON..
tv4 用于验证 JSON 数据,通过编写 JSON Schema 来验证,JSON Schema 的语法请参照这里
测试语法:
// description 为该测试的描述
// value 只要 Boolean(value) 不等于 false,这个测试就是 PASS
tests[description] = value
// example
tests["Status code is 200"] = responseCode.code === 200;
我们以 github status 的接口为例:
url: https://status.github.com/api/status.json
tests["Status code is 200"] = responseCode.code === 200;
// validate json schema
var schema = {
properties: {
status: {type: 'string'},
last_updated: {type: 'string'}
}
};
tests["Valid data schema"] = tv4.validate(responseBody, schema);
// check status
var jsonData = JSON.parse(responseBody);
tests["Github status is good"] = jsonData.status === 'good';
运行结果:
示例
受 http://httpbin.org/ 启发,Postman 也提供了一套入门的 API http://dump.getpostman.com/ ,接下来我们将利用这套 API 做完整的测试。
点击 Manage Environments,然后点击 Add
添加一个 URL 变量,我们会在后续使用
注:记得将环境变量切换到 dump.getpostman.com,这样我们才能获取到{{url}}变量
{
"username": "abhinav",
"password": "abc"
}
这个接口现在好像不支持创建用户了,我们假设已经创建成功了,因为这不影响我们后续操作
{
"username": "abhinav",
"password": "abc"
}
var data = JSON.parse(responseBody);
if (data.token) {
tests["Body has token"] = true;
postman.setEnvironmentVariable("user_id", data.user_id);
postman.setEnvironmentVariable("token", data.token);
}
else {
tests["Body has token"] = false;
}
{
"post": "This is a new post"
}
var data = JSON.parse(responseBody);
if (data.post_id) {
tests["post_id found"] = true;
postman.setEnvironmentVariable("post_id", data.post_id);
}
else {
tests["post_id found"] = false;
}
var schema = {
"type": "object",
"properties": {
"content": "string",
"created_at": "integer",
"id": "integer"
},
"required": ["content", "created_at", "id"]
};
var data = JSON.parse(responseBody);
var result = tv4.validateResult(data, schema);
tests["Valid schema"] = result.valid;