HTTP调试工具-POSTMAN使用(3) 变量及环境使用

上篇文章:https://blog.csdn.net/m0_37263637/article/details/84538698

在上一篇文章中,我们尝试使用测试代码让POSTMAN对http响应结果进行判断。这就是通常使用最简单测试用例了。但一般情况下,都会区分环境,比如开发环境,测试环境,生产环境。而这些环境的地址或某些参数肯定是不同的,手动修改会显得十分愚蠢,所以如果想用一套测试case能够在多种环境下运行就需要使用POSTMAN 中的变量及环境功能。本文将介绍如何在POSTMAN中配置环境,并设置变量。

如果直接讲环境和变量可能会比较空洞,所以本文会基于一个非常简单的请求来讲,仅为使用示例,阅读后各位读者可以基于自己具体情况编写测试。

1 测试背景

本文目标为创建一个开发环境及测试环境,并以变量方式来区分环境地质,并将上一个请求的结果设置为环境变量值,并作为下一个请求的参数。
本例需测试两个请求:
1 获取token
2 使用token得到账号信息

2 测试

2.1 创建环境及环境变量

在这里插入图片描述
点击右键的设置按钮,在新弹出的窗口点击add,创建新的环境
在这里插入图片描述
这里创建一个本地环境 取名为host并创建了3个环境变量url email password.

然后返回点击下方的复制按钮生成一个host copy 的复制环境
在这里插入图片描述
在这里插入图片描述
进入复制环境修改环境为名test url地址更换为测试环境的url,点击update,这我们就得到test 和host两个环境,实际使用可以自己添加里面的环境变量参数。实际结果如图:
在这里插入图片描述

2.2 编写测试

2.2.1 使用环境变量发起请求并将请求结果设置到环境中

以下是待测试API:获取token

url: http://localhost:3017/oauth2/token
method: POST
body :
client_id=test
client_secret=123456
grant_type=password
username=test_mocha@test.com
password=sunmedia

Response:
{
    "access_token": "bdb9f8f9d098914b9c26b1dc3c50bd8575bc98ec",
    "token_type": "Bearer",
    "expires_in": 7199,
    "refresh_token": "d7b13795e9d2192b63beef9f4ea2e76f7647f6db",
    "scope": "ALL"
}

1 创建一个study的collection 并创建一个获取token的测试,并通过变量的方式读取我们在2.1中设置的环境变量
POSTMAN可以用{{变量名}}读到在2.1中我们设置的变量名如下图:
在这里插入图片描述
可以看到地址使用{{url}}传入的。下面显示已经正常得到返回值,但这里我们需要用POSTMAN代码提取返回值并设置到环境变量中以供下一个请求获取account作为参数传入。
在这里插入图片描述
我们在test中编写了下面代码判断请求结果,如果成功将会把token 和refreshtoken设置POSTMAN环境变量中。

pm.test("http status code is valid", function () {
    pm.response.to.be.ok;
    pm.response.to.have.status(200);
});

let responseJSON;
try { 
    responseJSON = JSON.parse(responseBody); 
    tests['response is valid JSON'] = true;
}
catch (e) { 
    responseJSON = {}; 
    tests['response is valid JSON'] = false;
}

pm.test("set token success", function () {
    pm.environment.set("token", responseJSON.access_token);//将解析出的结果设置到环境变量token中
    pm.environment.set("refreshtoken", responseJSON.refresh_token);
});

可以从右上角中看到token 已经被设置进去了
在这里插入图片描述

2.2.2 使用上个请求返回结果作为参数进行下个请求

获取账户基本信息API

GET /v1/users/account HTTP/1.1
Host: localhost:4006
Authorization: Bearer 39d20875a35d9026499e4f4da4554b6152eec7aa
timestamp: 2018-12-28T07:37:26.727Z
cache-control: no-cache
Postman-Token: 8c61d2c3-2d9c-4cdc-b3f8-c5eab895c2e8
Response:
{
    "id": "b5510070eeeb11e8bee8333334c7a46c",
    "name": "test_mocha_accout1",
    "email": "test_mocha@test.com",
    "portrait": "https://haha.s3.amazonaws.com/user_material/portrait/user_b5510070eeeb11e8bee8333334c7a46c.jpg",
    "verified": true,
    "email_verified": true,
    "setting": "",
    "info": {
        "language": "en_US"
    }
}

1 创建一个获取账户信息的测试,并通过变量的方式读取我们在2.2中得到的环境变量token并作为参数发起请求。这里顺便介绍一下POSTMAN请求前脚本
即pre-request Script,在POSTMAN每个请求发起前都可以先执行一段脚本。比如我们可以用这段脚本获取一下时间信息并配置为变量传入即将发起的请求。

pm.environment.set("timestamp", new Date(((new Date()).getTime()+1000*60*60)).toISOString());

在这里插入图片描述
下面即为获取token的请求示例
在这里插入图片描述
可以看到在headers参数中传入在上一个请求中得到token,也传入了在pre-request Script中设置的timstamp参数。
同样也可以test中编写测试将得到account信息写入到环境中用于后续API测试。如:

pm.test("http status code is valid", function () {
    pm.response.to.be.ok;
    pm.response.to.have.status(200);
});

let responseJSON;
try { 
    responseJSON = JSON.parse(responseBody); 
    tests['response is valid JSON'] = true;
}
catch (e) { 
    responseJSON = {}; 
    tests['response is valid JSON'] = false;
}

pm.test("set id success", function () {
    pm.environment.set("id", responseJSON.id);
    pm.environment.set("portrait", responseJSON.portrait);
});

2.3 切换环境

右上角下拉即可切换环境,快速更改测试环境url等参数。
在这里插入图片描述

3 总结

2中流程即演示了如何在POSTMAN中使用环境和变量,让一些需要手动更改的参数变成类似于动态自动config,到这里对于日常使用算是实现了基本小康,对于开发者用于调试已经够用了。后面将会介绍如何使用collection进行整个项目的自动测试及集成到类似于Jenkins中实现流程自动化。

POSTman中 POST 方式 Body raw 格式选择application/json中传入变量 使用“{{id}}” 仍然可以使用变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值