postman测试工具的使用
1. postman结构
1. 请求部分的页签
Params: 用于在get请求传参
Authorization: postman自带鉴权功能
Headers: 请求头
Body: post请求传参
none: 没有参数
form-data: 既有文件又有键值对
x-www-form...: 只传输键值对
raw: 传输Json, txt, xml, html, js数据
binary: 把文件以二进制方式进行传输
Pre-request Script: 接口请求之前的脚本, js
Tests: 断言的代码
Cookies: Postman的cookie管理器
code: 生成接口自动化脚本
2. 响应部分页签
Body: 返回的数据
Pretty: 以json格式展示
Raw: 以文本格式展示
Preview: 以网页格式展示
cookie: 返回的cookie信息
Headers: 响应头
TestResults: 断言结果
status: 状态码
time: 消耗的时间
szie: 字节数
2. postman内置动态参数
企业当中做接口测试的时候经常出现的接口不能把参数写死
1. 时间戳: {{$timestamp}}
2. 生成0-1000的随机数: {{$randomint}}
3. 生成一个GUID的字符串: {{$guid}} 很长的一个字符串
3. Postman环境变量和全局变量
环境种类: 开发环境, 测试环境, 预发布环境, 线上环境
环境变量和globals都是全局变量
4. 接口关联
1. JSON提取器
// 提取access_token的值
var jsValue = JSON.parse(responseBody)
console.log(jsValue.access_token)
//把提取的值保存到全局变量
pm.globals.set("access_token", js.Value.access_token);
2. 正则表达式提取器
// 使用正则表达式提取 match 匹配, new RegExp新建规则
var flag_id = responseBody.match(new RegExp('"id":(.+?),'))[1]
console.log(flag_id)
pm.globals.set("flag_id", flag_id);
5. 断言
八大断言方式(位置: postman -> 请求页签 -> tests)
//1. 断言返回码为200 用于状态断言 pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
//2. 断言返回的结果中包括有一个指定的字符串 用于业务断言
//3. 对返回的结果做json字段的检查 用于业务断言
//4. 断言返回的结果等于一个字符串 用于业务断言
pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });//5. 断言响应头中包含有指定的响应头
pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });//6. 断言接口请求的时间少于200ms 用于性能断言
pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });//7. 断言一个post请求的返回的状态码是否在指定的范围内
pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201, 202]); });//8.断言返回的状态码信息中包含指定的字符串
pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); });精确断言:
在 Pre-request Script中编写前置断言脚本
var times = Data.now()
pm.globals.set("times", times);
例: //业务断言(精确断言)
pm.test("Body matches string", function()){
pm.expect(pm.response.text()).to.include("token"+pm.globals.get("times"));
});
全局断言:
用于状态断言