Jmeter----如果(If)控制器
1.说明
在做接口测试过程中,部分场景的接口是否请求取决于上一个接口的返回结果
比如:现在一些网站,用户去登录的时候,先走登录的流程,如果是网站用户就登录成功;如果不是网站的用户,就自动注册,再登录
所以,我们如果想测试这个场景,就需要先调用登录的接口,根据接口返回,决定是否调用注册的接口,此时就需要用到“如果(If)控制器”
2.操作步骤
写一个简单的例子做说明
(1)添加“如果(If)控制器”
线程组---->添加---->逻辑控制器---->如果(If)控制器
*1:为了提高性能,建议选择“Interpret Condition as Variable Expression”并使用_jexl3或_groovy的值为true或false。
${SJMeterThread.last sample ok} 可用于测试最后一个采样器是否成功
*2:表达式(必须计算为true或false)
*3:这个选项被选中,将不会使用js解析;条件表达式的值必须是true(忽略大小写)。
建议勾选并使用这种方式,如果使用js模式,会有性能损耗。
*4:是否每次执行子取样器的时候,都执行一次if条件判断
(2)__jexl3 函数
选项---->函数助手对话框---->选择__jexl3 函数
${code} == 30100007
${code} 是登录接口返回值中获取到的内容,30100007是开发定义的未注册用户状态码
如果:登录接口返回的code如果等于30100007,则${__jexl3(${code} == 30100007,)} 的值就为true
如果:登录接口返回的code如果不等于30100007,则${__jexl3(${code} == 30100007,)} 的值就为false
(3)运行结果
左图:未注册用户登录,会调用注册接口
右图:已注册用户登录,只调用登录接口