JMeter多线程场景下如何按指定顺序执行有依赖的Http请求?
JMeter有依赖关系的多线程HTTP测试方案
你要的顺序执行、避免重复发货的需求可以通过以下配置实现:
- 首先将三个有依赖关系的HTTP请求放在同一个线程组内,按「创建用户→创建订单→发货」的顺序从上到下排列。JMeter默认同一线程组内的请求对每个独立线程都是串行执行的,上一个请求处理完成(含响应提取、断言判断)才会执行下一个,不会出现单个线程内步骤跳变的情况。
- 变量隔离配置:提取
user_id、order_id的JSON提取器,适用范围保持默认的「当前线程」即可,不要修改为全局作用域,保证每个线程提取的变量只在当前线程生命周期内有效,不会出现多线程之间变量互相覆盖、错用其他线程订单ID发货的问题。 - 前置成功校验,避免无效执行:
- 在创建用户、创建订单请求后分别添加响应断言/JSON断言,校验接口返回码、业务状态码均为成功状态,一旦前序接口失败直接标记当前线程的本次执行中断,不会继续执行后续步骤。
- 发货请求前添加If控制器,填入判断条件
${__groovy(vars.get("user_id") != null && vars.get("order_id") != null,)},只有两个依赖变量都正常提取到的时候才会执行发货操作,避免前序接口失败、变量为空导致的异常请求。
- 如果你有参数化订单ID的场景,用到CSV数据集配置组件时,将「共享模式」设置为「当前线程」,保证每个线程读取到的参数是唯一的,不会出现多个线程拿到同一个订单ID重复发货的问题。
如果需要循环执行测试,可在每个循环的开头添加用户参数组件,重置
user_id、order_id变量为空,避免上一轮循环的旧变量残留导致的逻辑错误。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

