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

JMeter中如何逐行读取文本文件并作为REST API请求JSON体

解决JMeter逐行读取TXT文件并递增行号提交请求的问题

问题场景

需要读取每行都是JSON消息的TXT文件,将每行内容作为REST API请求的JSON体,实现每次请求自动取下一行提交,但当前JSR223预处理器固定行号为1,导致每次请求都只发送第1行内容。

解决方案

1. 修改JSR223预处理器代码

使用JMeter变量存储当前行号,每次请求后自动递增,替换原有代码为:

// 替换为你的TXT文件实际路径
def filePath = "/path/to/your/file.txt"
def file = new File(filePath)
def lines = file.readLines()

// 获取当前行号,首次请求时默认从1开始
def currentLine = vars.get("currentLine") ?: "1"
def lineNumber = currentLine as int

if (lineNumber <= lines.size()) {
    // 读取对应行的JSON内容
    def lineContent = lines[lineNumber - 1]
    vars.put("extractedLine", lineContent)
    // 递增行号并保存到JMeter变量中
    vars.put("currentLine", (lineNumber + 1).toString())
} else {
    log.warn("已读取完文件所有行,文件共包含${lines.size()}行")
    // 可选:若需要循环读取文件,可取消下面注释重置行号
    // vars.put("currentLine", "1")
}

2. 配置线程组循环次数

  • 若已知文件总行数,直接将线程组的循环次数设置为对应数值;
  • 若不确定总行数,可先通过代码将行数存入变量,再结合__P()函数或配置元件动态设置循环次数。

3. 保持HTTP请求体配置

HTTP请求的Body Data仍设置为 ${extractedLine},确保每次请求都会加载当前行的JSON内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:58