首页>软件资讯>常见问题

常见问题

自动化实战之postman

发布时间:2023-08-01 16:39:51人气:170

前言

接口测试工具脑海里会浮现postman或者其他类型,确实postman功能好用,另一个大部分开发和测试人员都会使用,方便信息共享。

测试过程中,接口功能测试是很普遍,使用postman工具通过手动填写参数,进行接口逻辑验证。

除了接口功能逻辑测试,大部分接口需要上下接口参数依赖,因此,使用postman做业务场景自动化念头越来越强烈,写好自动化,在回归功能效率有部分提升。

完整流程

1.png

自动化

postman脚本支持JS语言编写。

用户注册请求填写请求地址、请求body,其中{{user}}请求地址使用了Variable,而{{autoPhoneNumber}}也是变量。

2.png

在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 每条用例执行结果统计,非常直观方便。

3.png

//获取接口返回体且为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收费标准