一、Postman内置的动态参数
企业当中做接口测试的时候经常会出现接口不能把参数写死。
时间戳:{{$timestamp}}
生成0-1000的随机数:{{$randomInt}}
生成一个GUID的字符串:{{$guid}} # 很长的一个字符串
二、Postman之接口关联
将接口的一个请求返回作为全局变量(Tests栏下)
- json提取器
//提前access_token的值
var jsValue = JSON.parse(responseBody)
console.log(jsValue.access_token)
//把提取的值保存在全局变量
pm.globals.set("access_token",jsValue.access_token);
- 正则表达式提取器
//使用正则表达式提取 match: 匹配 new RegExp: 新建规则
var para = responseBody.match(new RegExp('"id":(.+?),'))[1]
console.log(para)
//把提取的值保存在全局变量
pm.globals.set("access_token",para);
三、Postman之断言
八种断言方式,八大元素定位:
- 断言返回吗为200,一般用于状态断言(常用)
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
- 断言返回的结果中包括一个指定的字符串,用于业务断言(常用)
Response body:Contains string
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
- 对返回的结果做json检查
Response body: JSON value check
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
- 断言返回的结果等于一个字符串
Response body: is equal to a string
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
- 断言响应头中包含指定的响应头
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
- 断言接口请求的时间少于200ms,用于性能断言
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
- 断言一个post请求的返回的状态码是否在指定的范围里面
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("OK");
});
精确断言(Pre-request Scripts):
var times = Date.now()
pm.globals.set("times", times);
全局断言:
位置:EDIT COLLECTION -> Tests
(可以把状态断言放在全局断言里面)