JMeter逻辑控制器之Switch Controller


Switch Controll的工作方式与交替控制器(Interleave Controller)类似,因为他们都是每次迭代都会运行一个子元件,但不同的是,Switch 控制器不是按照顺序执行的,而是按照控制器定义Swith Value来执行。

在这里插入图片描述

参数介绍

属性描述必填
Name控制器名称,可以根据实际情况进行设置
Comments注释,描述在业务中的作用
Switch Value要调用的子元件的编号(或名称),即表示需要执行Switch控制器中的哪一个取样器。元件从0开始编号。默认为0

Switch Value填写的内容如下:

  • 0:执行第一个请求,1:执行第二个请求,依次类推
  • -1:无效,不会执行任何请求
  • 要是填的数字超过取值范围了,就默认是0
  • 不填:默认执行数字0的请求,即顺位第一个请求
  • 非数字:可以填请求的名字来匹配,但是必须是完整的名字,如果是英文,区分大小写

元件编号执行

如果在Switch Value中输入0就表示执行第一个请求,如果输入1就表示执行第二请求,如果为空默认执行第一个请求。输入的值超出范围,就会执行第一个请求(有两个请求,值输入3,那么会执行第一个请求)。

元件名称执行

在Switch Controller下有两个请求,名称为“请求1”和“请求2”,如果在Switch Value中输入“请求1”,那么就会执行“请求1”,如果输入“请求2”,那么就会执行“请求2”;如果两个名称都不匹配,则选择名为“ default”的元件(大小写无关)。如果没有默认值,则不会选择任何元件,并且控制器将不会运行任何内容。
例如,输入一个名称都不存在的请求:Test,那么它会执行default元件,运行结果如下所示:
在这里插入图片描述

使用表达式

如果Switch Value是根据前一个取值来获得的,所以在这里数值可以使用变量代替,如根据上一个请求的数据来执行Switch Controller下的请求,如图所示:
在这里插入图片描述
并且在该请求下添加一个后置处理器Regular Expression Extractor来提取id号,设置一个变量ID,正则表达式为'id': ([0-9]+)如下图所示:

在这里插入图片描述
在Swith Value输入${ID}的表达式获取ID号,如下图所示:

在这里插入图片描述
执行结果如下所示:
在这里插入图片描述
还有一种情况是返回的结果是字符,不是单纯的数字,这个时候需要用BeanShell Sampler取样器,将字符转换成相应的数字或者转换成相应的请求名称,在进行后续操作,代码为:

String IDS = vars.get("ID");
print(IDS);
if (IDS.equals("1")){	
	vars.put("names", "HTTP请求--2");
	}else{
		vars.put("names", "HTTP请求--1");
		}

如下图所示:
在这里插入图片描述

在Swith Value表达式为${names},如下图所示:
在这里插入图片描述
执行结果如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值