如何在JMeter中动态将CSV文件数据传入JSON请求体?
在JMeter中通过CSV动态生成复杂JSON请求体
1. 准备CSV测试数据文件
根据测试需求创建CSV文件(例如test_data.csv),每行对应一个完整的JSON请求体。注意CSV字段需用双引号包裹,内部的双引号要转义为两个双引号,示例格式如下:
"{""rejectedData"": [{""bi"": ""20200624061722601"", ""r"": ""413450"", ""h"": ""HUL-1000067687"", ...}], ""pointAdjustedBillsInfo"": [...]}" "{""rejectedData"": [{""bi"": ""测试值2"", ""r"": ""413451"", ...}], ...}"
如果需要拆分JSON的各个顶级数组单独维护,可将每个数组的JSON字符串作为CSV的一列,表头对应字段名:
rejectedData,pointAdjustedBillsInfo,pointsReversalInfo,pointsEarnedInfo "[{""bi"": ""20200624061722601"", ...}]", "[{""bi"": ""20200624061722601"", ...}]", "[{""bi"": ""20200624061722601"", ...}]", "[{""bi"": ""20200624061722601"", ...}]"
2. 配置CSV数据读取元件
在JMeter线程组下添加CSV Data Set Config元件,配置参数:
- 文件名:填写CSV文件的绝对路径或相对路径(例如
./test_data.csv) - 文件编码:选择
UTF-8 - 变量名称:如果是单行完整JSON,填写
REQUEST_BODY;如果是拆分字段,填写对应表头名称(例如rejectedData,pointAdjustedBillsInfo,pointsReversalInfo,pointsEarnedInfo) - 分隔符:单行完整JSON时留空,拆分字段时用逗号
, - 允许带引号:勾选(确保CSV中的双引号能被正确解析)
- 循环控制:根据测试场景选择,例如“下一行”实现按行遍历数据,“循环”则重复使用数据
3. 修改HTTP请求体为动态引用
方式1:直接引用完整JSON变量
在HTTP请求的Body Data中,直接写入CSV定义的变量:
${REQUEST_BODY}
方式2:拼接拆分的数组字段
如果使用拆分字段的CSV格式,在Body Data中拼接JSON结构,引用对应变量:
{ "rejectedData": ${rejectedData}, "pointAdjustedBillsInfo": ${pointAdjustedBillsInfo}, "pointsReversalInfo": ${pointsReversalInfo}, "pointsEarnedInfo": ${pointsEarnedInfo} }
4. 验证请求体生成结果
添加查看结果树元件,运行测试后检查每个请求的请求体,确认CSV中的数据已正确动态加载到JSON中。
内容的提问来源于stack exchange,提问作者rupert
相关产品推荐
相关产品推荐

