Postman有4种变量类型
环境变量(Environment Variable)
本地变量(LocalVariable)
全局变量(Global Variable)
数据变量(Data Variable)
环境变量(Environment Variable)
环境变量指在不同环境,同一个变量值随着环境不同而变化。例如,当在测试环境时,host值为:neibuwww.kongfz.com,当切换到生产环境时,host值变为:www.kongfz.com。
设置环境变量可高效切换测试环境和生产环境,只维护一套API。
环境变量设置:在postman界面点击右上角眼睛图标或设置图标
变量引用格式为{{varname}},右上角选择对应环境选项,{{varname}}就能获取到对应的值,如下图所示:
本地变量(LocalVariable)
本地变量主要是针对单个URL请求设置的变量,作用域只是局限在请求范围内。变量设置的格式为{{varname}}
1、请求方式为POST,设置两个本地变量(user,passwd)作为参数。变量设置好了之后需要赋值,在Pre-request Script里面编写如下代码:
2、请求方式为GET,设置本地变量格式如下,设置好了之后同样也是在Pre-request Script里面赋值
全局变量(Global Variable)
全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。变量设置的格式为{{varname}}
全局变量设置有两种方式:
- 点击界面里设置
- 在脚本里设置
界面设置
点击眼睛图标后,在Global选项菜单点击Edit菜单即可设置全局变量。
注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量。
脚本设置
使用如下脚本可以设置全局变量:variable_key表示变量名称, variable_value 表示变量值。
pm.globals.set("variable_key", "variable_value")
实践案例
在实际接口测试过程中,接口经常会有关联。比如需要取上一个接口的某个返回值作为参数传递到下一个接口作为参数。假设我们要获取A接口返回的userid值作为B接口的请求参数。
A接口请求URL如下:
https://postman-echo.com/post
- 请求方式为Post
- 请求参数:userid(这里自己定义,接口会返回对应的id值)
返回值:
{
"args": {},
"data": "",
"files": {},
"form": {
"userid": "123456"
},
"headers": {
"x-forwarded-proto": "https",
"x-forwarded-port": "443",
"host": "postman-echo.com",
"x-amzn-trace-id": "Root=1-601bb0e8-6d149a042cddffe63454214f",
"content-length": "13",
"user-agent": "PostmanRuntime/7.23.0",
"accept": "*/*",
"cache-control": "no-cache",
"postman-token": "415c2df0-d1e8-4fa2-beb9-cc633d9219fa",
"content-type": "application/x-www-form-urlencoded",
"accept-encoding": "gzip, deflate, br",
"cookie": "username=zxw2021; sails.sid=s%3AfhcBZDNiC-V3adqtLXzE-L9tI3ez7cVp.MkMZvPeAHTEj10%2FsI%2BO5klFu2bqfsA9kMtGldehLxYw"
},
"json": {
"userid": "123456"
},
"url": "https://postman-echo.com/post"
}
根据返回值我们需要从返回值中提取userid值。在Test标签栏下编写如下脚本获取userid值
//获取返回的响应值然后转化为json格式
var jsonData = pm.response.json();
//获取返回的userid值
userid=jsonData.json['userid'];
//控制台日志查看
console.log(userid);
//将获取的变量设置全局变量
pm.globals.set("userid", userid);
B接口请求URL如下:请求方式为GET
postman-echo.com/get?userid={{userid}}
先执行A接口的,然后在执行B接口,此时B接口通过全局变量userid可以获得A接口的返回值。
数据变量(Data Variable)
数据变量是通过导入外部数据文件(json文件或者csv文件),来获取变量数据。
我们可以创建一个如下内容的json文件:
[{
"username": "jack",
"passwd": "6666"
},{
"username": "Bob",
"passwd": "5555"
}, {
"username": "Marry",
"passwd": "8888"
}]
然后结合运行Collection来导入数据文件。