如何在JMeter中基于JSR223采样器实现嵌套Switch控制器
实现基于JSR223采样器的嵌套Switch控制器逻辑
我来帮你把这段代码调整得更规范,修复潜在问题,同时确保能正确生成嵌套Switch控制器需要的变量:
// 解析响应中的options数量,存入counts变量 def responseJson = new groovy.json.JsonSlurper().parse(prev.getResponseData()) def counts = responseJson.options.size() as String vars.put('counts', counts) // 根据counts值设置Opt变量(修复原代码中Count未定义的问题) if (counts.toInteger() == 1) { vars.put('Opt', 'Single') } else { vars.put('Opt', 'Double') } // 使用JsonPath判断options_available是否为空数组,设置size变量 def optionsAvailable = com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(), '$.options_available') if (optionsAvailable.isEmpty()) { vars.put('size', 'NonConfigurable') } else { vars.put('size', 'Configurable') }
代码细节说明:
- 先统一解析响应JSON,避免重复调用
prev.getResponseData(),提升脚本执行效率 - 修复了原代码中
Count未定义的错误,改为从vars中获取counts并转为整数做判断 - 把
double调整为首字母大写的Double,保持变量值命名风格一致(你可以根据Switch控制器的case名称灵活调整) - 使用
isEmpty()方法判断数组是否为空,比直接和[]对比更稳妥,兼容性更好
配合嵌套Switch控制器的使用步骤:
- 第一层Switch控制器:将
Switch Controller的Switch Value设置为${Opt},然后添加两个子节点,分别命名为Single和Double,对应不同分支的逻辑 - 第二层Switch控制器:在第一层的每个子节点下,再添加一个
Switch Controller,把它的Switch Value设置为${size},然后添加两个子节点,分别命名为NonConfigurable和Configurable
这样就能基于Opt和size两个变量,实现完全嵌套的分支控制逻辑了。
内容的提问来源于stack exchange,提问作者Siddish
相关产品推荐
相关产品推荐

