You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Groovy脚本读取CSV构建JMeter请求体?

解决JMeter中用Groovy从CSV构建JSON数组请求体的问题

你需要修改Groovy脚本,将CSV中的对象名转换为JSON数组格式的字符串并存储到变量中,以下是修正后的代码:

// 默认分隔符(如果CSV是一行多个值用逗号分隔则保留,否则可忽略)
char SEPARATOR = ',';

String csvFile = props.get("csvPathAndName")

log.info('__________________________________________________________________________________________________________________________________________________________')
log.info(csvFile)

// 读取CSV文件并构建JSON数组字符串的方法
def readLines(String csvFile) {
    File file = new File(csvFile);
    // 读取文件所有行,去除每行首尾空格并过滤空行
    List<String> objectNames = file.readLines().collect { it.trim() }.findAll { !it.isEmpty() }
    
    // 如果你的CSV是**单行多值**(比如一行是objectName1,objectName2,...),请替换上面的行为:
    // List<String> objectNames = file.text.split(SEPARATOR).collect { it.trim() }.findAll { !it.isEmpty() }
    
    // 将每个对象名包裹双引号,并用逗号连接成JSON数组元素格式
    String jsonElements = objectNames.collect { "\"$it\"" }.join(', ')
    
    // 将结果存入JMeter变量listOfObjects
    vars.put("listOfObjects", jsonElements)
}

readLines(csvFile)

关键修改说明:

  • 处理CSV内容:通过collect { it.trim() }去除每个对象名的首尾空格,findAll { !it.isEmpty() }过滤空行/空值,避免生成无效的JSON元素。
  • 构建JSON格式:用collect { "\"$it\"" }给每个对象名添加双引号,再通过join(', ')将所有元素拼接成"obj1", "obj2", "obj3"的格式。
  • 存储变量:将拼接好的字符串存入listOfObjects变量,之后在HTTP请求的请求体中直接引用即可:
    {
      [ ${listOfObjects} ]
    }
    

注意事项:

  • 确保csvPathAndName属性配置的是CSV文件的绝对路径,或者是相对于JMeter启动目录的相对路径。
  • 如果CSV文件有表头,需要在读取时跳过第一行,可在readLines后添加objectNames.remove(0)。

内容的提问来源于stack exchange,提问作者Breno Araripe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:45:39