1. 导入json数据,主界面左上角,import
2. 配置环境变量environment。作用:本地、测试环境、上线环境跑测试用例,只需Runner时切换environment文件夹即可(主页面右上角)
添加环境变量文件夹(可取名为local),添加 url 和 port 的初始值,可导出;主页面右上角齿轮,添加环境变量。
主页面地址栏可类似于 http://{{url}}:{{port}}/user
3. Runner , 作用: 选择一个文件夹(可嵌套)或单一文件,点击
最上面一行标题栏,Runner选择一个文件夹,选择一个环境变量,下方多选框 keep variable values 默认不勾选,代表此次runner结束后主界面变量不受影响;
body中填入请求值,Headers如有需要也可添加;Pre-request Script是请求前做的操做;Tests是得到返回后做的操作,以及断言
我们的目的是Tests中的断言都符合预期,跑出的结果都是pass
4. Body
符合json标准即可
"age":5 //数字
"class":"five" //字符串
"grade": {{grade}} //全局变量或环境变量中grade的值,作为数字赋给“grade”
"name":"{{name}}" //全局变量或环境变量中name的值,作为字符串赋给“name”
5. JS
var name = rankName(7); //定义一个变量,并调用自定义方法
pm.globals.set("rankName ", name ); //将name的值存到全局变量中,"rankName"为key
pm.environment.set("variable_key", "variable_value"); //存进环境变量的方法
全局变量和环境变量在Pre和Tests中获取都用get; Header、Body、地址栏中使用,{{rankName}}
var request = JSON.parse(request.data); //将请求参数转成json
var r = pm.response.json(); //将返回值转成json
var id = r.id; //获取json中的值
console.log(" username = " + request["username"] ); //控制台打印
//获取随机长度,随机范围字符的方法
function rankName(len){
var randstr = ''
var dict = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_-'
for(var i = 0; i < len; i++) {
var index = Math.floor(Math.random()*dict.length)
randstr += dict[index]
}
return randstr
}
//循环获取json中集合的值并对比
var r = pm.response.json();
for(var i=0, len=r.data.groups.length; i<len; i++){
if(groups[i].name == pm.globals.get("groupName")){
pm.globals.set("GROUP_ID_TEST", groups[i].id);
break;
}
}
//随机生成0-n的数
function getLimit(max){
var limit = Math.ceil(Math.random() * max);
return limit;
}
//随机生成min-max范围内整数的方法
function getGroupId(){
var max = 242;
var min = 152;
var groupId = parseInt(Math.random()*(max-min+1)+min,10)
return groupId;
}
getRoute(rs.next)
function getRoute(next){
if(next === null || next === undefined || next === ''){
return;
}
pm.sendRequest(kongUrlItem + next, function (err, response) {
const item = response.json();
console.log('item=>'+item.next);
checkData(item.data)
getRoute(item.next)
});
}
6. 断言:
var r = JSON.parse(responseBody);
tests[""] 双引号中为这个断言的名字,推荐记录要断言的结果,Runner中方便查看; 后面跟一个 = 是语法格式
r.code === 500 为真正要断言的等式
tests["code is 500"] = r.code === 500 //预期返回的code是500,若不是,则不通过(即这个请求若返回200,Runner中的这个断言也是不通过的);
tests["非空参数校验提示"] = r.message === "can't be empty" //,判断返回的message中,提示是否符合预期
tests["长度为1"] = d.groups.length === 1
tests["组名相同"] = d.data.groups[0].name === pm.globals.get("groupName");
tests["test groups []"] = JSON.stringify(d.data.groups)=="[]" //断言空集合
JSON.stringify(a)==="{}" 判断json空对象
tests["判断包含字符串"] = groups[i].name.toLowerCase().indexOf(groupNameLike.toLowerCase()) >= 0 //断言忽略大小写,包含字符串
setTimeout(()=>console.log('等待'), 1000);
在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,我们往往需要在该请求前先发送一下所依赖的请求, 我们可以在Pre-request script中使用pm.sendRequest实现
- 发送GET请求
const url = 'http://115.28.108.130:5000/api/user/getToken/?appid=136425';
// 发送get请求
pm.sendRequest(url, function (err, res) {
console.log(err ? err : res.text()); // 控制台打印请求文本
});
可以配合pm.environment.set(key:value)来将响应中的数据保存到环境变量中以供本次请求使用
示例: 使用请求前脚本获取token并使用,
Postman使用脚本发送get请求
- 发送表单格式Post请求
//构造一个登录请求
const loginRequest = {
url: 'http://115.28.108.130:5000/api/user/login/',
method: "POST",
body: {
mode: 'urlencoded', // 模式为表单url编码模式
urlencoded: 'name=张三&password=123456'
}
};
// 发送请求
pm.sendRequest(loginRequest, function (err, res) {
console.log(err ? err : res.text());
});
输出信息可以通过点击Postman菜单栏 ->view-> Show Postman Console, 打开控制台查看(先打开控制台,再发送请求)
Postman使用脚本发送Post表单请求
- 发送JSON格式请求
// 构造一个注册请求
const regRequest = {
url: 'http://115.28.108.130:5000/api/user/reg/',
method: 'POST',
header: 'Content-Type: application/json', //注意要在Header中声明内容使用的类型
body: {
mode: 'raw', // 使用raw(原始)格式
raw: JSON.stringify({ name: '小小', password: '123456' }) //要将JSON对象转为文本发送
}
};
//发送请求
pm.sendRequest(regRequest, function (err, res) {
console.log(err ? err : res.json()); // 响应为JSON格式可以使用res.json()获取到JSON对象
});
Postman脚本中发送JSON格式Post请求
- 发送XML格式请求
发送XML格式和发送JSON格式差不多, 只要指定内容格式并发送相应的内容即可
//构造请求
const demoRequest = {
url: 'http://httpbin.org/post',
method: 'POST',
header: 'Content-Type: application/xml', // 请求头种指定内容格式
body: {
mode: 'raw',
raw: '<xml>hello</xml>' // 按文本格式发送xml
}
};
//发送请求
pm.sendRequest(demoRequest, function (err, res) {
console.log(err ? err : res.json());
});
本文所演示接口- 接口文档传送门
参考链接:https://www.jianshu.com/p/9481387c7cd7