一、请求页签
params:get请求传参,(post或其他请求路径中有参数那么也会自动填充到
params)
Authorization:鉴权方式
headers:传请求头
Pre-request-Script:请求之前的脚本(可用于接口关联时设置全局变量)
tests:请求之后的断言
setting:设置
Body:post请求传参,包含以下几种方式:
form-data:可以传文件也可以传表单键值对。
x-www-form-urlencoded:只能传表单键值对。
raw:json,text,html,javascript,xml
binary:二进制文件上传
cookie:是postman工具自动的保存以及发送cookie。
二、响应页签
Body:返回的数据,Pretty以json./…格式,Raw文本,Preview网页
Cookie:响应的Cookie
headers:响应头
Test Results 断言的测试结果
status :状态码
388MS:响应时间
三、接口关联
下一个接口要用到上一个接口的数据,需要进行接口关联。
3.1使用json提取
//第一个接口的Tests中编写js脚本,将提取的数据设置为全局变量
//把返回的json字符串转换成对象。
var jsonObj = JSON.parse(responseBody);
//从对象中取出access_token的值并设置成全局变量
pm.globals.set("access_token",jsonObj.access_token);
3.2使用正则表达式提取
//第一个接口的Tests中编写js脚本,将提取的数据设置为全局变量
//通过返回的结果匹配一个正则表达式去得到需要的值
var datas = responseBody.match(new RegExp('"access_token":"(.*?)"'));
pm.globals.set("access_token",datas[1]);
- 其他接口使用全局变量:{{access_token}}
全局变量:在所有环境所有接口都可以访问的变量。
环境变量:在当前环境所有接口都可以访问的变量。
- 也可以设置全局前置脚本和Tests
其他常用方法:
1.获取响应头的值
var content_type = postman.getResponseHeader("Content‐Type");
console.log(content_type);
2.获取响应的Cookie的值
var csrf_token = postman.getResponseCookie("csrf_token");
console.log(csrf_token.value);
3.如果返回的是xml的值,那么可以转化成对象
var jsonObject = xml2Json(responseBody);
四、动态参数
1.内置的动态参数:局限在于无法断言。
{{$timestamp}} 生成当前时间的时间戳
{{$randomInt}} 生成0-1000的随机数
{{$guid}} 生成一个很长的GUID的随机字符串
2.自定义的动态参数或函数
2.1自定义时间戳参数
var times = Date.now();
console.log(times);
2.2随机整数
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1))+min;
console.log(randomInt(100000000,999999999));
2.3等待几秒再调用(防灌水,限制访问接口频率等)
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
};
//等待3秒
sleep(3000);
五、断言
判断预期结果和实际结果是否一致。
1.状态断言:断言返回码为200,一般只有一个。
2.业务断言:判断最核心的业务关键字。可以有多个。
断言状态码为200(必用)
断言返回的结果中包含有一个字符串。(常用)
断言检查返回的json对象中的字段值。(一般用于当返回是json对象时)
断言返回的body等于一个字符串。(一般用于当返回的结果很少时)
检查是否包含有Content-type的响应头
检查请求耗时少于200ms
检查post请求的响应码是否是一个值
检查返回的信息是否是一个字符串。
//状态断言:检查返回的状态码为200
pm.test("检查返回的状态码为200", function () {
pm.response.to.have.status(200);
});
//业务断言:检查返回的结果中包含有access_token字符串
pm.test("检查返回的结果中包含有access_token字符串", function () {
pm.expect(pm.response.text()).to.include("access_token");
});
//检查返回的结果中的json里面的expires_in的值为7200
pm.test("检查expires_in的值为7200", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.expires_in).to.eql(7200);
});
//断言响应头中有Content‐Type
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);
});
//断言状态码在一个区间
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([200, 202]);
});
//断言返回信息
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK");
});
在断言里获取全局变量使用:
pm.globals.get("times")
六、数据驱动
postman进行数据驱动选择json或者csv格式文件。
csv格式:
grant_type,appid,secret
client_credential,wx74a8627810cfa308,e40a02f9d79a8097df497e6aaf93ab80
,wx74a8627810cfa308,e40a02f9d79a8097df497e6aaf93ab80
client_credential,,e40a02f9d79a8097df497e6aaf93ab80
client_credential,wx74a8627810cfa308,
json格式:
[
{"grant_type":"client_credential","appid":"wx74a8627810cfa308","secret":"e40a02f9d79a8097df497e6aaf93ab80"},
{"grant_type":"","appid":"wx74a8627810cfa308","secret":"e40a02f9d79a8097df497e6aaf93ab80"},
{"grant_type":"client_credential","appid":"","secret":"e40a02f9d79a8097df497e6aaf93ab80"},
{"grant_type":"client_credential","appid":"wx74a8627810cfa308","secret":""}
]
提高preview查看参数:
进行参数化的参数使用全局变量获取:
七、加密接口
对称式加密:DES,AES,Base64 可以加密也可以解密。
非对称式加密:RSA 公钥加密,私钥解密,私钥加密,公钥解密
只加密不解密:MD5,SHA256 只加密不解密
网站:https://www.bejson.com/
MD5加密方式:
var user = CryptoJS.MD5("admin").toString().toUpperCase();
var pass = CryptoJS.MD5("123").toString().toUpperCase();
Base64加密方式:
var user = CryptoJS.enc.Utf8.parse("admin");
var base64_user = CryptoJS.enc.Base64.stringify(user);
var pass = CryptoJS.enc.Utf8.parse("123");
var base64_pass = CryptoJS.enc.Base64.stringify(pass);