[JM_14]JMeter逻辑控制器-02:If Controller操作解析

If Controller 概述

类似于编程语言中if语句,根据给定表达式的值决定是否执行该节点下的子节点,表达式的值为true则执行,为false则不执行;默认使用javascript语法进行判断

采用JMeter 4.0版本,If Controller界面如下:

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第1张图片

【选项配置说明】

  1. 对于新版本JMeter4.0,IF Controller的Expression输入框中不能直接填写判断条件的表达式,需要将利用__jexl3函数或__groovy函数将条件表达式求值计算为true/false才有效
    具体可参看此文==>[JM]"Interpret Condition as Variable Expression" and use __jexl3 or _groovy evaluating to...解决方案
  2. 根据警告信息,建议勾选Interpret Condition as Variable Expression?
  3. 条件判断语句若是字符串,则需要用引号包围参数,如:"FE_user" == "test002"
  4. 选择"Evaluate for all children?"代表该If控制器在每个子节点执行时都会执行一次,不选择则代表If控制器只在入口执行一次
  5. If Controller之下的请求才会受到If控制器的约束,若是平级则不会受约束;因此建议将业务请求放在If控制器之下进行测试
  6. 依从以上规则,填写到Expression输入框中的的内容,样式如:${__groovy("${FE_user}" == "test003",)}


实践案例:

案例描述:添加自定义的变量值,利用ForEach Controller进行读取此变量值,然后将读取的变量值保存到设定的变量中;当变量取值符合IF Controller中设定的条件时,则执行其下的业务请求并监控

操作步骤
1)在Thread Group下添加、配置用户自定义变量
操作路径:Add-->Config Element-->User Defined Variables

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第2张图片
[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第3张图片

2)添加、配置ForEach控制器
操作路径:Add-->Logic Controller-->ForEach Controller

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第4张图片
[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第5张图片

3)在ForEach Controller下添加HTTP Request-1,请求中配置引用读取的参数

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第6张图片

4)在ForEach Controller之下添加IF Controller,设置判断真假的求值函数

${__groovy("${FE_user}" == "test003",)}表示ForEach Controller中读取的变量值为"test003"时,才会执行IF Controller之下的请求

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第7张图片
[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第8张图片

5)配置Thread Group,保存所有配置,执行Run,查看效果

[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第9张图片
配置Thread Group
[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第10张图片
HTTP Request-1的执行记录,满足设定读取添加的所有变量值
[JM_14]JMeter逻辑控制器-02:If Controller操作解析_第11张图片
HTTP Request-2的执行记录,满足判断条件

参考来源:
[1] Jmeter逻辑控制之if控制器
[2] Jmeter if控制器的使用 - 真正实现3:2的业务

你可能感兴趣的:([JM_14]JMeter逻辑控制器-02:If Controller操作解析)