JMeter如何从CSV数据配置元件读取多行数据同时用于单个接口请求体
JMeter 单请求引用CSV多行数据构造JSON数组配置方案
方案说明
直接通过JSR223预处理脚本读取CSV文件并构造目标JSON格式,无需依赖默认CSV数据集配置的逐行读取逻辑,适配任意行数的拼接需求。
具体配置步骤
- 第一步:在目标HTTP请求下添加JSR223 预处理程序,语言选择
groovy - 第二步:将以下脚本填入预处理程序的脚本输入框,按需修改参数:
import groovy.json.JsonBuilder import groovy.csv.CsvParser // 替换为你的CSV文件实际路径,建议使用绝对路径避免读取失败 def csvFile = new File("C:/test/data.csv") // 配置CSV表头、跳过首行表头,读取所有数据行 def csvRows = new CsvParser().parse(csvFile, header: ['Name','Pass','ID','a_ID','f_ID'], skipFirstLine: true) def payloadList = [] csvRows.each { row -> // 按业务需求配置字段类型,数字类型不需要加引号,字符串类型直接取值即可 def item = [ Name: row.Name, Pass: row.Pass as Integer, ID: row.ID as Integer, a_ID: row.a_ID, f_ID: row.f_ID as Integer ] payloadList.add(item) } // 将生成的JSON数组存入变量,后续直接引用 vars.put("requestPayload", new JsonBuilder(payloadList).toString())
- 第三步:配置HTTP请求的信息头,添加
Content-Type字段,值为application/json - 第四步:将HTTP请求的请求体内容直接设置为
${requestPayload}即可
特殊场景适配
如果你不需要单次请求发送CSV全部数据,而是每次固定发送N行(比如每次发3行),可以改用以下配置逻辑:
- 先添加CSV数据集配置,填写CSV路径、变量名
Name,Pass,ID,a_ID,f_ID,设置「遇到文件结束符再次循环」为False,「遇到文件结束符停止线程」为True - 在JSR223预处理程序中使用以下脚本:
import groovy.json.JsonBuilder // 单次请求需要读取的行数 def linePerRequest = 3 def payloadList = [] (linePerRequest).times { def item = [ Name: vars.get("Name"), Pass: vars.get("Pass") as Integer, ID: vars.get("ID") as Integer, a_ID: vars.get("a_ID"), f_ID: vars.get("f_ID") as Integer ] payloadList.add(item) } vars.put("requestPayload", new JsonBuilder(payloadList).toString())
注意事项
- 字段类型转换需和实际业务保持一致,如果你的
Pass/ID等字段是字符串格式,删除as Integer即可 - Groovy脚本性能远高于BeanShell,不要修改脚本语言选项
- 相对路径默认是相对于JMeter的bin目录,不确定路径的情况下优先使用绝对路径
内容的提问来源于stack exchange,提问作者Muhammad Ibraheem Ajmal
相关产品推荐
相关产品推荐

