全局变量

全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。
全局变量设置有两种方式:
  • 点击界面里设置
  • 在脚本里设置
 
界面设置
点击眼睛图标后,在 Global 选项菜单点击 Edit 菜单即可设置全局变量,如下图所示。全局变量的引用格式和环境变量一样,
注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量。

010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_json

 010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_环境变量_02

 010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_环境变量_03

 

全局变量的作用域是所有请求,所有请求都可以调用。
 
010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_json_04

010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_数据_05

 

脚本设置
 
 使用如下脚本可以设置全局变量:variable_key 表示变量名称, variable_value 表示变量值。
pm.globals.set("variable_key", "variable_value");

更多详细代码如下:

// var data=JSON.parse(responseBody);   //接受响应结果,并转化为格式
// console.log(data)
// console.log(data.data.token_info.token)


// // 把token设置到环境变量中
// var data = JSON.parse(responseBody);
// console.log(data.data.token_info.token)
// if (data.data.token_info.token) {
//   tests["Body has token"] = true;
//    postman.setEnvironmentVariable("token", data.data.token_info.token);     //设置环境环境变量
// }
// else {
//   tests["Body has token"] = false;
// }
// // env_token = pm.environment.get("token");        //从环境变量中提取
// // console.log(env_token)


var data=JSON.parse(responseBody);
// 把token设置到全局变量中
if (data.data.token_info.token) {
  tests["Body has token"] = true;
   pm.globals.set("token", data.data.token_info.token);     //设置全局变量
}
else {
  tests["Body has token"] = false;
}
// globals_token = pm.globals.get("token");        //从全局变量中提取
// console.log(globals_token)


// 把id设置到全局变量中
if (data.data.id) {
    tests["Body has id"] = true;
    pm.globals.set("member_id", data.data.id);
}
else {
     tests["Body has id"] = false;
}
// globals_member_id = pm.globals.get("member_id");        //从全局变量中提取
// console.log(globals_member_id)

 

实践案例
在实际接口测试过程中,接口经常会有关联。比如需要取上一个接口的某个返回值,然后作为参数传递到下一个接口作为参数。假设我们要获取 A 接口返回的 userid 值作为 B 接口的请求参数。
 
A 接口请求 URL 如下:
https://postman-echo.com/post
 
• 请求方式为 Post
• 请求参数:userid(这里自己定义,接口会返回对应的 id 值)
 
 返回值
010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_全局变量_06

 

Tests是响应后的操作,Pre-requests Script 是前置操作 。

010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_作用域_07

 

Tests 里面的代码如下:
//获取返回的响应值然后转化为 json 格式
var jsonData=pm.response.json();
//获取返回的 userid 值
userid=jsonData.json['userid'];
//控制台日志查看
console.log(userid);
//将获取的变量设置全局变量
pm.globals.set(userid)

 

在另外一个 B 请求(get_request) 里面使用global userid如下:

010、Postman全局变量&数据变量,接口关联。  (全局变量的作用域是所有请求都可以调用。)_环境变量_08

 

数据变量
 
数据变量是通过导入外部数据文件(json 文件或者 csv 文件),来获取变量数据。我们可以创建一个如下内容的 json
文件:data.json 文件代码如下:
[{
 "username": "jack",
 "passwd": "6666"
},{
 "username": "Bob",
 "passwd": "5555"
}, {
"username": "Marry",
 "passwd": "8888"
}]
 
稍后我们会结合运行 Collection 来讲解如何导入该数据文件。