逻辑控制器:逻辑控制器是用来决定采样器的处理顺序的元件
可以按功能分为两大类:一种是变更脚本逻辑执行顺序 另一种是将脚本进行分组
逻辑控制器使用:线程组右键→添加→逻辑控制器
就我来说工作上使用的就简单控制器 循环控制器 其他的没用过 不过还是一个一个说吧
内容大部分都是粘自jmeter的用户手册:https://jmeter.apache.org/usermanual/component_reference.html#logic_controllers
如果控制器
根据给定表达式的值决定是否执行该节点下的子节点(我个人觉得这个控制器是脚本步骤太长结果树太多怕你瞎让你知道到那一步出问题用的- -!)
写一个场景测试一下(判断是否登录成功 成功后执行发帖操作,不成功不执行)
第一种写法:点击Use status of last sample 利用上一个页面返回是否成功来判断是否可以执行发帖操作
ps:${JMeterThread.last_sample_ok} 的结果只有true或false它是一个变量
Interpret Condition as Variable Expression?:默认勾选,将条件解释为变量表达式(需要使用 ${__jexl3 } 或 ${__groovy } 表达式)
官网上对此的解释是以前可以使用条件: ${__jexl3(${VAR} == 23)}这将被评估为true / false将变量结果传递给JavaScript,然后返回true/false. 如果选择了变量表达式选项,则表达式会被评估并与“ true ”进行比较,而无需使用 JavaScript。(你问我 我也不清楚既然勾选就会增加性能 那为什么不做成不使用JavaScript... 问了下群友 他们都是默认不勾选用的JavaScript )
第二种写法:使用groovy 表达式(别问我groovy与jexl3的区别 我查了一下都是用来写动态表达式的语言 你爱用哪个用哪个 没找到具体区别)
我登录脚本给用户 写了两个变量一个是test1 一个是admin if控制器里是admin用户就发贴不是就不发(两个线程 第一个 走的是test1 第二个走的是admin)看下结果树
看下结果线程1 只走到了登录并没有发帖 线程2可以发帖
第二种写法:jexl3表达式 写法和groovy一致 我就演示了 直接上图吧
脚本不会写就用函数助手