在JMeter中从CSV读取多值填充POST请求的FilterData JSON数组
从CSV读取多值填充FilterData JSON数组的实现方案
核心逻辑是先读取CSV文件中所有ContractorId转为列表,再直接赋值给FilterData字段即可,以下是不同常用工具的具体实现:
Postman 实现
- 准备CSV文件,第一行表头为
contractorId,每行对应一个ID值,示例格式:
contractorId LoadTest92 LoadTest93 LoadTest94
- 打开对应请求的Pre-request Script标签,写入如下代码:
// 读取CSV全量数据提取所有ID const csvData = pm.iterationData.values.all(); const idList = csvData.map(item => item.contractorId); // 更新请求体的FilterData字段 const body = JSON.parse(pm.request.body.raw); body.FilterData = idList; pm.request.body.raw = JSON.stringify(body);
- 运行Collection Runner时选择对应CSV文件,即可自动将所有ID填充为FilterData数组。
JMeter 实现
- 添加
CSV Data Set Config元件,配置对应CSV文件路径,变量名设置为contractorId,Delimiter设为\n,Recycle on EOF设为False,Stop thread on EOF设为True。 - 添加
JSR223 PreProcessor前置处理器,写入如下代码:
// 读取所有ID转为列表 def idList = [] new File("你的CSV文件绝对路径").eachLine { line, lineNum -> // 跳过第一行表头 if (lineNum > 1) { idList.add(line.trim()) } } // 转为JSON数组存入变量 vars.put("filterData", new groovy.json.JsonBuilder(idList).toPrettyString())
- 请求体中FilterData字段直接引用变量即可:
"FilterData": ${filterData}
Python 脚本实现
- 先安装依赖:
pip install requests pandas - 示例代码如下:
import requests import pandas as pd # 读取CSV提取所有ID df = pd.read_csv("你的CSV文件路径.csv") contractor_ids = df["contractorId"].tolist() # 构造请求体 payload = { "ABC": "ITBK1", "Code": "AH01001187", "ScheduleDate": "${startTo}", "FilterType": 2, "FilterData": contractor_ids } # 发送POST请求 resp = requests.post("你的接口请求地址", json=payload) print(resp.status_code, resp.json())
内容的提问来源于stack exchange,提问作者Jagannatha Mv
相关产品推荐
相关产品推荐

