JMeter中如何复用请求输出的JSON变量至后续请求并实现依赖判断
JMeter 多步骤依赖请求场景实现方案
整体需求概述
需实现3个连续依赖的请求步骤:步骤1从文件读取数据发起SOAP请求,仅当步骤1返回业务状态码000时,才将读取的账户数据用于步骤2的请求体,否则跳过步骤2;100条对应数据对应100个独立线程执行。
一、线程组与CSV数据读取配置
- 新建线程组,设置线程数为
100,循环次数为1,保证每条CSV数据对应一个独立线程 - 添加CSV数据文件设置组件:
- 填写CSV文件路径(文件需包含
账户名称、账户编号两列,列分隔符可根据文件实际设置,比如逗号) - 变量名设为
accountName,accountId - 线程共享模式选择仅当前线程,避免不同线程读取重复数据
- 填写CSV文件路径(文件需包含
二、步骤1:SOAP请求与业务状态码提取
- HTTP请求采样器配置:
- 请求方法选
POST,填写SOAP服务的目标URL - 添加HTTP信息头管理器,新增
Content-Type: text/xml; charset=UTF-8 - 请求体中插入CSV变量,示例SOAP报文:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:biz="http://biz.example.com"> <soapenv:Header/> <soapenv:Body> <biz:queryAccountInfo> <biz:accountName>${accountName}</biz:accountName> <biz:accountId>${accountId}</biz:accountId> </biz:queryAccountInfo> </soapenv:Body> </soapenv:Envelope>
- 请求方法选
- 提取业务状态码:
- 若SOAP响应为XML格式,添加XPath提取器:
- 引用名称设为
bizStatusCode - XPath表达式写对应状态码的节点路径(比如
//biz:responseCode/text(),需根据实际响应结构调整)
- 引用名称设为
- 若响应为JSON格式,替换为JSON提取器,JSON Path表达式写
$.responseCode
- 若SOAP响应为XML格式,添加XPath提取器:
三、步骤2:条件触发的请求执行
- 添加If控制器,在条件框中输入:
勾选${__jexl3("${bizStatusCode}" == "000",)}Interpret Condition as Variable Expression选项,确保仅当步骤1返回的业务状态码为000时,执行控制器内的请求 - 在If控制器下添加HTTP请求采样器(步骤2的请求),请求体中直接引用变量,示例JSON请求体:
{ "operateAccount": { "accountId": "${accountId}", "accountName": "${accountName}" }, "action": "verify" }
四、步骤3:收尾请求配置
- 在线程组内(If控制器外)添加步骤3的HTTP请求采样器,确保无论步骤2是否执行,步骤3都会在步骤1完成后运行
关键验证点
- 检查CSV文件路径是否正确,线程启动后是否每条线程读取唯一一行数据
- 验证If控制器的条件表达式是否生效:可通过查看结果树,确认状态码非
000时步骤2是否被跳过 - 确认变量引用格式正确,避免因语法错误导致请求体变量未替换
内容的提问来源于stack exchange,提问作者Golam Mawla
相关产品推荐
相关产品推荐

