前言
接口测试工具脑海里会浮现postman或者其他类型,确实postman功能好用,另一个大部分开发和测试人员都会使用,方便信息共享。
测试过程中,接口功能测试是很普遍,使用postman工具通过手动填写参数,进行接口逻辑验证。
除了接口功能逻辑测试,大部分接口需要上下接口参数依赖,因此,使用postman做业务场景自动化念头越来越强烈,写好自动化,在回归功能效率有部分提升。
完整流程
自动化
postman脚本支持JS语言编写。
用户注册请求填写请求地址、请求body,其中{{user}}请求地址使用了Variable,而{{autoPhoneNumber}}也是变量。
在Pre-request Script中,使用JS编写随机生成一个手机号码,设置为变量。
//自定义一个随机生成手机号码
var max = 19499999999;
var min = 19410000000;
var phoneNum = Math.floor(Math.random() * (max - min)) + min;
//console.log("phoneNum:",phoneNum);
//随机生成手机号,设置为环境变量
pm.environment.set("autoPhoneNumber", phoneNum);
//通过pm.variables.get获取环境变量
var phone = pm.variables.get("autoPhoneNumber");
//手机号数值类型转化字符串
var phoneStr = phone.toString();
//获取手机号码后4位,设置为环境变量
var lastFourPhone = phoneStr.substring(phoneStr.length-4);
pm.environment.set("autoLastFourPhone", lastFourPhone);
//console.log("lastFourPhone:",lastFourPhone);
检查手机号码是否存在,其中一种方式Pre-request Script编写脚本发送一个request。
var preUrl = pm.environment.get("user");
var reqUrl = preUrl+"/user/findUser";
const sendReq = {
url:reqUrl,
method:"POST",
header:"Content-Type: application/json",
body:{
mode:"raw",
raw:"{"phoneNumber":"{{autoPhoneNumber}}"}"
}
}
pm.sendRequest(sendReq, function (err, response) {
console.log(response.json());
});
用户注册请求完成后,接下来才是自动化核心所在。postman中Tests,主要做自动化断言和请求后置处理。
首先获取接口返回值。
var jsonData = pm.response.json();
使用expect函数进行判断。官方提供等于、字符串包含、JSON value check、响应header check、响应时间大于/小于判断,可以在实际中使用这些常见的函数。可能返回数组嵌套对象,类似[{"name":"east"},{"name":"east"}],可以自己编写js脚本实现。
pm.expect(jsonData.resultCode).to.eql("success");
Test Results 每条用例执行结果统计,非常直观方便。
//获取接口返回体且为JSON对象
var jsonData = pm.response.json();
//根据返回值,判断resultCode是否等于"success",则用例通过,否则用例失败。
pm.test("responseJsonData resultCode is success", function () {
pm.expect(jsonData.resultCode).to.eql("success");
});
//判断请求响应码为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
//用户注册成功 或者 用户登录成功,返回用户uid,获取uid并且保存为变量
pm.test("responseJsonData setAutoUid", function () {
var uid = jsonData.data.uid;
pm.environment.unset("autoUid");
pm.environment.set("autoUid", uid);
console.log("uid:",uid)
});
用户注册成功,用户信息uid、phone等等,可以通过获取用户接口进行验证,也可以直接与数据库对应表、字段值进行对比。
var autoUid = pm.variables.get("autoUid");
//获取用户信息接口
pm.test("responseJsonData check autoUid eql uid", function () {
var uid = jsonData.data.uid;
pm.expect(uid).to.eql(autoUid);
console.log("uid:",uid)
});
总结
postman功能非常强大,集成接口文档、接口请求及自动化、环境变量、工作空间,支持多人协作、集合、支持JS等等。在工作中在适合的地方使用,效率倍增。但在做自动化时,无法连接redis、数据库、grpc 、kafka 也会有些局限性,可以通过开发接口作为跳板。
上一条:13个EPLAN安装及常见问题汇总
下一条:postman收费吗?postman收费标准