当前位置: 首页 > news >正文

JMeter 实现:上接口失败则不执行下一个接口

多个接口只要一个失败,只跳过关联接口

步骤 1:在“上一个接口”设置开关变量

在上一个接口上右键 →添加 → 后置处理器 → JSR223 后置处理器,填入脚本:

java

// 方式一:只看 HTTP 成功 //if (prev.isSuccessful()) { // vars.put("LOGIN_OK", "true"); //} else { // vars.put("LOGIN_OK", "false"); //} // 方式二: HTTP 成功 加 业务逻辑判断(例如响应体包含 "code":0 才算成功) //获取HTTP响应状态码 String httpCode = prev.getResponseCode(); // 获取接口完整返回体 String resBody = prev.getResponseDataAsString(); // 双重判断:http状态200 且 业务码code=0 if (httpCode == "200" && resBody.contains("\"code\":0")) { vars.put("LOGIN_OK", "true"); } else { vars.put("LOGIN_OK", "false"); }
//方式二:另一种写法 if (prev.getResponseCode() == "200" && prev.getResponseDataAsString().contains("\"code\":0")) { vars.put("LOGIN_OK", "true"); // 成功标记true } else { vars.put("LOGIN_OK", "false"); // 失败标记false }

prev是 JMeter 内置变量,代表上一个取样器的结果。

LOGIN_OK 自定义变量,用来给 If 控制器判断




步骤 2:用 If 控制器包裹“关联接口”

在需要跳过的接口外层添加逻辑控制器 → If 控制器,条件填:

text

${__jexl3("${LOGIN_OK}" == "true")}

上一个接口为groovy 模式,必须勾选【解释条件为变量】

逻辑:只有LOGIN_OK=true(接口 A 成功),才会执行内部接口 B;A 失败时直接跳过 B。


然后在 If 控制器下面放你所有需要依赖上一个接口的请求。

结构树形图

text

线程组 ├── 登录 │ └── JSR223 后置处理器(设置 LOGIN_OK) ├── If 控制器(条件:"${__jexl3("${LOGIN_OK}" == "true")}") │ ├── 查询用户信息 │ │ └── JSR223 后置处理器(设置 QUERY_USER_OK) │ ├── If 控制器(条件:"${__jexl3("${QUERY_USER_OK}" == "true")}") │ │ └── 修改用户信息 │ ├── 查询订单列表 │ │ └── JSR223 后置处理器(设置 QUERY_ORDER_OK) │ └── If 控制器(条件:"$${__jexl3("${QUERY_ORDER_OK}" == "true")}") │ └── 修改订单状态 └── 其他不依赖登录的接口(不受影响)

变量默认值----可以没有

在测试计划开头添加一个配置元件 → 用户定义的变量,把开关变量默认设为false,避免变量未定义时报错:

text

LOGIN_OK = false QUERY_USER_OK = false QUERY_ORDER_OK = false
http://www.jsqmd.com/news/1098669/

相关文章:

  • vm虚拟机安装win10系统步骤
  • AI写作技巧:把你的想法翻译成AI能理解的语言
  • TVA在具身智能全栈能力体系中的关键作用(10)
  • JavaScript的DOM操作基础
  • 给宝宝起名字找哪个网站靠谱
  • docker python images Docker Python镜像别乱拉!容器和镜像傻傻分不清,你还在踩坑?
  • 第九次作业---基于springboot+mybatis+vue的项目实战之增删改查CRUD—Restful风格
  • 学 Simulink——输送带多电机驱动的转速同步与主从控制(Droop / 带载分配)仿真
  • 从Google论文到Hadoop实战:MapReduce核心思想如何帮你搞定海量日志分析
  • YOLO26N 姿态估计 TensorRT 部署:Jetson 实时推理
  • 经典 CNN 网络 VGG
  • 2026Word文档过大怎么瘦身,多种压缩Word文件大小实操方法指南
  • 配置外置与敏感隔离:基于 Django-environ 的多环境配置管理策略
  • 基于HarmonyOS 7.0 跨端开发的全球火山活动监测页面实战
  • 性能测试进阶:从压测工具到容量规划的系统工程实践
  • 学 Simulink — 航空航天 270 V DC 高压直流电源变换器的短路保护仿真
  • Prompt工程设计实践:从基础模板到场景化策略
  • 二升三年级暑假特色作业(pdf图文版)
  • Python判断数字?别再用isdigit了,这些坑踩过的人都哭了
  • Pentaho Kettle企业级ETL架构设计与性能优化深度解析
  • 【论文阅读笔记10】小样本充电数据驱动的电池寿命预测——双流ViT与ESA
  • DeepSeek 开始摇人,有点猛啊。
  • 机器人顶刊T-RO收录!同济大学:扔掉标定板,实现全自动在线对齐
  • 抖音批量下载终极指南:3分钟学会高效采集视频、音乐、封面
  • 3步解决华硕笔记本控制难题:G-Helper轻量化性能管理实战指南
  • Xournal++:开源手写笔记软件的跨平台PDF批注解决方案深度解析
  • Magpie终极指南:15种超分辨率算法重塑Windows窗口放大体验
  • YOLO26N 姿态估计 INT8 量化:低算力设备极致优化
  • 最近很火的Loop Engineering到底是什么?
  • uni-app微信小程序开发:核心标签详解(一)