postman的使用
一、postman的常规操作
1.1 get请求使用方式
1.1.1 get请求
Params:get请求传参。
Authorization:鉴权
Headers:请求头
Body:post请求传参:
f orm-data:即可以传键值对,也可以传文件。
x-www-from-urlencoded:只能传键值对
raw:传json,xml,javascript,txt.html
binary:把文件转化成二进制传参。
Pre-requests Script:接口请求之前的脚本。
Tests:接口请求之后的脚本。
Settings:设置。
Cookie:是Postman自动的管理Cookie信息的按钮。
Body:响应的数据
Pretty:可以以json,xml,html,txt查看响应数据。
Raw:以文本的格式查看响应数据
Preview:以网页的形式查看响应数据
Cookies:响应的Cookie信息
Headers:响应头信息
Test Results:查看断言结果
状态码:200
状态信息:OK
接口数据返回耗时:182MS
接口返回的数据量:343个字节。
1.get请求是获取数据,而post请求一般都是提交数据。
2.post请求比get安全。
3.本质的区别是:传输的方式不一样,get在url的后面以?的方式传参,多个参数之间用&分隔。post是通过body表单传参。
1.4 部分微信公众号接口测试
https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_0
https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_1
https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_2
下一个接口的参数是使用的上一个接口的返回值?
.1 JSON提取器(都是从返回值里面提取)
//javascript脚本,var定义变量 //打印responseBody返回值 console.log(responseBody) //使用json提取器把responseBody返回值转化成一个字典。 var jd = JSON.parse(responseBody) //提取access_token,并且设置为全局变量(就是在任何接口请求都可以访问的变量) pm.globals.set("access_token",jd.access_token);
{{access_token}}
var token = responseBody.match(new RegExp('"access_token":"(.*?)"')); //提取access_token,并且设置为全局变量(就是在任何接口请求都可以访问的变量) pm.globals.set("access_token",token[1]);
//从响应头里面提取变量 var types = postman.getResponseHeader("Content‐Type") console.log(types)
//从Cookie里面提取变量 // 访问phpwind论坛首页接口 https://www.cnblogs.com/wangyong123/articles/18350271#_lab0 var csrf_token = postman.getResponseCookie('csrf_token'); console.log(csrf_token.value)
接口测试中常常会出现接口的参数不能写死,必须使用随机数来实现。
{{$timestamp}} 时间戳
{{$randomInt}} 随机的0-1000的整数
{{$guid}} 随机的很长的字符串
//自定义的时间戳 var times = Date.now(); pm.globals.set("times",times);//让接口请求停留3秒(3秒灌水机制),time.sleep(3) const sleep = (milliseconds) => { const start = Date.now(); while (Date.now() <= start + milliseconds) { } }; sleep(3000);
//自定义的时间戳 var times = Date.now(); pm.globals.set("times",times); //让接口请求停留3秒(3秒灌水机制),time.sleep(3) const sleep = (milliseconds) => { const start = Date.now(); while (Date.now() <= start + milliseconds) { } }; // 请求之前停留三秒打印 321 sleep(3000); console.log(321);
{"tag":{"id":134,"name":"王勇{{times}}"}}
//让接口请求停留3秒(3秒灌水机制),time.sleep(3) const sleep = (milliseconds) => { const start = Date.now(); while (Date.now() <= start + milliseconds) { } }; // 请求之前停留三秒打印 123 sleep(3000); console.log(123);
// 断言返回码为200
// 断言返回结果中包含指定的字符串
// 断言并检查返回的JSON数据
// 断言返回的值等于一个字符串
// 断言响应头包含Content-type
// 断言响应时间少于200M// 断言返回吗为200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 断言返回结果中包含指定的字符串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }); // 断言并检查返回的JSON数据 pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); }); // 断言返回的值等于一个字符串 pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }); // 断言响应头包含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); });