全局变量
全局变量是指在所有的环境里面,变量值都是一样的,全局变量的作用域是所有请求。 全局变量设置有两种方式: • 点击界面里设置 • 在脚本里设置 界面设置 点击眼睛图标后,在 Global 选项菜单点击 Edit 菜单即可设置全局变量,如下图所示。全局变量的引用格式和环境变量一样, 注意:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量。
全局变量的作用域是所有请求,所有请求都可以调用。
脚本设置 使用如下脚本可以设置全局变量: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 值) 返回值
Tests是响应后的操作,Pre-requests Script 是前置操作 。
Tests 里面的代码如下:
//获取返回的响应值然后转化为 json 格式 var jsonData=pm.response.json(); //获取返回的 userid 值 userid=jsonData.json['userid']; //控制台日志查看 console.log(userid); //将获取的变量设置全局变量 pm.globals.set(userid)
在另外一个 B 请求(get_request) 里面使用global userid如下:
数据变量 数据变量是通过导入外部数据文件(json 文件或者 csv 文件),来获取变量数据。我们可以创建一个如下内容的 json 文件:data.json 文件代码如下:
[{ "username": "jack", "passwd": "6666" },{ "username": "Bob", "passwd": "5555" }, { "username": "Marry", "passwd": "8888" }]稍后我们会结合运行 Collection 来讲解如何导入该数据文件。