一、请求页签
Params:get请求传参
Authorization:鉴权
Headers:请求头
Body:post请求传参
form-data:既可以传递键值对参数也可以传文件
x-www-form-urlencoded:只可以传递键值对参数
raw:json,text、xml、html、Javascript
binary:将文件以二进制的方式进行传参
Scripts:请求前后
Pre-request:请求之前的脚本
Pre-response:请求之后的断言
Cookies:管理Cookies信息
二、响应页签
Body:接口返回的数据
Pretty:以json,text、xml、html等不同格式查看返回的数据
Raw:以文本的方式查看返回的数据
Priview:以网页的方式查看返回的数据
Visualize:
Cookies:响应的Cookies信息
Headers:响应头
Test-Results:断言的结果
三、Postman的环境变量以及全局变量
环境变量:接口域名或IP地址
场景:频繁切换环境需要改每个接口的环境,非常麻烦;而定义环境变量,在每次切换环境时只需要改一下环境变量,可省去大量无脑工作。
全局变量:作用域为整个postman的变量,可在任何接口里面访问
场景:在测试接口时需要变动测试用户身份;在测试过程中用户身份的value使用全局变量,则在改变用户身份的时候,直接更改全局变量的value即可。
获取环境变量或全局变量的值通过:{ { 变量名 } }
四、接口关联
1、使用json提取器实现接口关联
第一个接口:
console.log(responseBody);
//使用json提取器提取access_token的值
//把返回的字符串格式的数据转换成对象的形式
var result = JSON.parse(responseBody);
console.log(result.access_token);
//把access_token设置为全局变量
pm.globals.set("access_token", result.access_token);
第二个接口:
{{access_token}}
2、使用正则表达式提取器实现接口关联
第一个接口:
//使用正则表达式提取器实现接口关联;
var result=responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result[1]);
//设置为全局变量
pm.globals.set("access_token", result[1]);
第二个接口:
{{access_token}}
//match 匹配;
//RegExp() 正则表达式;
五、Postman内置动态参数以及自定义动态参数
1、Postman内置动态参数
** { { $ timestamp } } :生成当前时间的时间戳**
** { { $ randomint } } :生成0-1000之间的随机数**
** { { $ guid } } : 生成随机GUID字符串**
** 局限性:并不是万能的,无法做断言**
** 2、自定义动态参数**
Pre-request Script:
//手动获得时间戳
var times=Date.now();
//设置为全局变量
pm.globals.set("times", times);
使用时使用: {{times}}
六、测试其他接口
七、Postman断言
1、常规断言
Status code:Code is 200 :检查返回的状态码是否为200
Response body:Contains string :检查响应中包括指定的字符串
Response body: json value check :检查响应中其他json的值
Response body:is equal to a string :检查响应等于一个字符串
Response headers: Content-Type header check :检查是否包含响应头Content-Type
Response time is less than 200ms :检查请求耗时小于200ms
Response body:Convert XML body to JSON Object :
Status code:Suessful POST request :
Status code:Code name has string :
Status code:Code is 200 :检查返回的状态码是否为200
//状态断言(一般只有一个)
pm.test("检查返回状态码为200", function () {
pm.response.to.have.status(200);
});
Response body:Contains string :检查响应中包括指定的字符串
//业务断言(可有多个)
pm.test("检查是否含字符串errcode与errmsg", function () {
pm.expect(pm.response.text()).to.include('{"errcode":0,"errmsg":"ok"}');
});
Response body: json value check :检查响应中其他json的值
pm.test("检查errcode为0", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.errcode).to.eql(0);
});
Response body:is equal to a string :检查响应等于一个字符串
pm.test("检查是否含字符串errcode与errmsg", function () {
pm.response.to.have.body('{"errcode":0,"errmsg":"ok"}');
});
Response headers: Content-Type header check :检查是否包含响应头Content-Type
pm.test("检查响应头中是否含有Content-Type响应头", function () {
pm.response.to.have.header("Content-Type");
});
Response time is less than 200ms :检查请求耗时小于200ms
pm.test("检查接口响应时间少于200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
2、在断言中获取自定义动态参数(全局变量)
1、
pm.globals.get("times")
2、
globals["times"]
3、
globals.times
3、全局断言
一般为状态断言,在整个项目中编辑设置断言
八、Postman数据驱动-使用csv与json文件(以获取接口统一鉴权码token接口为例)
1、设置参数
在Params中将参数值设置为:{{xxx}}
2、分析可能存在错误境况并编写文件
可能存在某一参数为空
CSV文件:
grant_type,appid,secret,assert_value
client_credential,wx76a49d374a490be7,3ab344597f5c85214de178aefd238659,access_token
,wx76a49d374a490be7,3ab344597f5c85214de178aefd238659,40002
client_credential,,3ab344597f5c85214de178aefd238659,41002
client_credential,wx76a49d374a490be7,,41004
JSON文件:
[
{"grant_type":"client_credential","appid":"wx76a49d374a490be7","secret":"3ab344597f5c85214de178aefd238659","assert_value":"access_token"},
{"grant_type":"","appid":"wx76a49d374a490be7","secret":"3ab344597f5c85214de178aefd238659","assert_value":"40002"},
{"grant_type":"client_credential","appid":"","secret":"3ab344597f5c85214de178aefd238659","assert_value":"41002"},
{"grant_type":"client_credential","appid":"wx76a49d374a490be7","secret":"","assert_value":"41004"}
]
3、选择文件运行
4、查看报告
九、必须带请求头接口
1、常见请求头
Host:请求主机地址
Connection:连接方式
Referer:来源
Accept:客户端收到的数据格式
X-Requested-With:异步请求
User-Agent:客户端用户类型
Cookie:Cookie信息
Content-Type:请求内容格式
接口测试中的问题
问题1 多种环境:开发、测试、生成环境
解决:环境变量与全局变量
问题2 接口关联:需要手动关联
解决:使用json提取器;使用正则表达式提取器
问题3 参数需要手动修改
解决:内置动态参数;自定义动态参数
版权归原作者 .山渐青. 所有, 如有侵权,请联系我们删除。