JMeter中Request Body内的动态值该如何进行关联操作?
JMeter Request Body 中动态值的关联操作方案
首先澄清常见认知误区:不存在需要从当前请求的Request Body里提取动态值做关联的场景,所有需要关联的动态值,本质上都来自当前请求之前的某一个环节的输出,你在当前请求Request Body里看到的动态值,只是需要把提前提取/生成的变量填充进去即可。
具体操作步骤如下:
- 第一步:溯源动态值的生成来源
对比两次相同业务流程的抓包记录,找到Request Body里动态值的首次出现位置:绝大多数场景下该值是更早的某一个请求的响应Body、响应Header返回的,少数场景是前端JS按固定规则生成、或者是前序请求的参数拼接结果。 - 第二步:提取动态值存储为JMeter变量
在动态值来源的请求节点下,添加对应类型的后置处理器完成值提取,自定义变量名即可:- 来源为JSON格式响应:使用
JSON Extractor提取 - 来源为普通字符串/HTML格式响应:使用
正则表达式提取器提取 - 来源为响应头:使用
正则表达式提取器指定应用范围为Response Headers即可提取
如果是前端JS规则生成的动态值,梳理清楚生成逻辑后,在当前请求下添加JSR223 PreProcessor,用Groovy代码实现相同生成逻辑,把结果存为自定义变量。
- 来源为JSON格式响应:使用
- 第三步:在Request Body中引用变量
把当前请求Request Body里原来的硬编码动态值,替换为JMeter变量引用格式${你自定义的变量名},运行时JMeter会自动把提取/生成的变量值填充进去,完成关联。
实际场景示例
比如提交订单请求的Request Body里有动态参数order_sign,该值是前序「订单确认页请求」的JSON响应中data.sign字段返回的:
- 在「订单确认页请求」下添加
JSON Extractor,配置项:- 引用名称:
order_sign - JSON Path表达式:
$.data.sign - 匹配数字:
0
- 引用名称:
- 打开「提交订单请求」的配置页,把Body Data中原有的
"order_sign":"xxx硬编码值xxx"修改为"order_sign":"${order_sign}" - 可添加
Debug Sampler查看变量提取、填充是否正确,完成调试。
内容的提问来源于stack exchange,提问作者Meeravali Shaik
相关产品推荐
相关产品推荐

