注意:我们的参数化的文件(CSV Data Set Config)要放在While Controller下面,不然取不到动态的值,会一直取参数化的第一条数据。
执行这个脚本时,当执行到库存=1时,不满足stock>1条件,所以执行完了当前循环,跳出While循环;也就是说不满足Condition的第一条数据会执行,即stock=1这次请求会执行完。
这里我们设置的初始库存是2,执行完第一次,库存减一,执行第二次时,库存是1不满足库存>1的条件,所以执行完当前循环后,跳出循环,一共执行两次加入购物车的请求。
If Controller 满足条件时只执行一次
使用场景:判断某个值符合条件时,执行请求,且只执行一次。
商品有库存时,执行加入购物车操作,无库存时,跳过该操作,继续往下执行(这里使用的场景跟While Controller一样,顺便讲一下两种Controller的不同)。这里也是引用的参数也是库存stock。
设置如下:
这里我们设置的Loop Controller(循环加入购物车)的循环次数是3。
If Controller的条件是${__groovy("${stock}" >= "1")}即当参数值>=1时,执行请求,如果<1,不执行请求。
这里注意,If Controller一定要与Loop Controller组合使用,不然If Controller只会执行一次。
Random Controller
使用场景:做压测时,我们不可能是所有的用户都做同样的操作,为了使结果更接近真实用户的场景,我们需要不同用户有不同的操作,这个时候我们就会用到Random Controller。
Random Controller:顾名思义,该Controller下的请求随机执行。
我们设置如下,我们在一个Random Controller下添加多个请求: