如何在JMeter中利用CSV测试数据生成自定义JSON请求负载?
一次性生成包含全部200个SKU的JSON请求负载方案
1. 添加JSR223 PreProcessor到目标请求前
通过Groovy脚本读取CSV所有SKU并构建JSON数组,操作步骤:
- 右键目标请求 → 添加 → 前置处理器 → JSR223 PreProcessor
- 在"脚本"框中粘贴以下代码:
// 替换为你的CSV实际路径 def csvPath = "C:\\Users\\..\\Documents\\testData.csv" def csvFile = new File(csvPath) def skuList = [] // 读取CSV内容(无表头时用这段,有表头看下方注意事项) csvFile.eachLine { line -> // 去除每行首尾空格,避免无效数据 def sku = line.trim() if (sku) { skuList.add(sku) } } // 构建符合需求的JSON结构(示例结构为{"skus": ["sku1", "sku2", ...]}) def jsonBuilder = new groovy.json.JsonBuilder() jsonBuilder { skus skuList } // 将生成的JSON存入JMeter变量,供请求调用 vars.put("fullSkuPayload", jsonBuilder.toString())
2. 配置请求负载
在你的请求(如Dummy Sampler或HTTP请求)的Body区域,直接引用变量:
${fullSkuPayload}
关键注意事项
- 如果CSV有表头,需要跳过第一行,修改脚本中的读取部分:
def isFirstLine = true csvFile.eachLine { line -> if (isFirstLine) { isFirstLine = false return } def sku = line.trim() if (sku) { skuList.add(sku) } } - Windows路径需用双反斜杠
\\转义,或者改用正斜杠/ - 优先使用Groovy作为脚本语言(JMeter默认推荐,性能最优)
- 若SKU包含引号、反斜杠等特殊字符,JsonBuilder会自动处理转义,无需手动操作
内容的提问来源于stack exchange,提问作者GorkhaliHero
相关产品推荐
相关产品推荐

