如何将ArrayList存入全局变量并在其他请求中调用
实现方案
核心逻辑都是统一的:先从第一个接口的响应结果中提取pinvalues数组,存储到对应工具的全局存储区,第二个请求调用时直接读取全局存储的数组赋值给pinposition字段即可,以下是主流工具的具体操作:
1. Postman 场景
- 在返回
pinvalues的接口的「Tests」标签页添加如下代码,将数组存入全局变量:
// 提取响应中的pinvalues数组 const pinValues = pm.response.json().pinvalues // 序列化后存入Postman全局变量 pm.globals.set("global_pin_values", JSON.stringify(pinValues))
- 在需要传
pinposition的请求中直接调用,若请求体为raw JSON格式,写法如下:
{ "pinposition": {{global_pin_values}} }
如果需要在脚本中操作数组,使用JSON.parse(pm.globals.get("global_pin_values"))反序列化为JS数组即可。
2. Python 接口脚本场景
- 定义全局变量存储提取到的数组,示例代码如下:
# 声明全局变量存储pin值 global_pin_values = [] # 第一个接口请求及值提取逻辑 def request_first_api(): import requests resp = requests.get("替换为你的第一个接口地址") resp_data = resp.json() global global_pin_values global_pin_values = resp_data.get("pinvalues", []) # 第二个接口请求逻辑 def request_second_api(): import requests req_body = { "pinposition": global_pin_values } resp = requests.post("替换为你的第二个接口地址", json=req_body) return resp
3. JMeter 场景
- 在第一个接口下新增JSON提取器,配置参数:
- 引用名称:
global_pin_values - JSON Path表达式:
$.pinvalues - 匹配数字:
-1(提取完整数组)
- 引用名称:
- 第二个请求的JSON请求体中直接引用变量:
{ "pinposition": ${global_pin_values} }
注意:如果是跨线程组调用,需要将提取的值存为JMeter属性,使用
__setProperty函数存储,__P函数读取即可。
内容的提问来源于stack exchange,提问作者prem
相关产品推荐
相关产品推荐

