案例:假如你想在一个脚本中,实现登录执行1次,查询执行2次,插入执行3次,怎么办?录3个脚本?每个事务分别在脚本中复制N次?
当然不用,LR早就想到了你的需求,下面让我们隆重推出Block。
位置:
Run-time Settings--General--Run Logic
操作:
1.将你所要考察的事务设置在不同的Action内。
2.在Run Logic中的Run中删掉默认的Action。
3.在Run中插入Block。
4.在插入的Block中再插入我们要考察的Action。
5.设置Block的properties。这里有两种选择,Sequential和Random。如果选择Sequential,在下面的Iteration中直接填入数值,那么Block中的Action都会按输入的次数执行。如果选择Random,下面的properties还可以设置Block内各Action执行的百分比。
按照我们前面的案例,我们只需要设置3个Block,每个Block中分别插入一个Action,设置执行次数分别为1,2,3就可以了
另外补充
1、如果脚本中各个action没有顺序或逻辑关系,Block中action顺序可以是任意的。如查询。但是像登录这样必须在前面执行的action,随意放置将导致脚本失败。
2、在number of iterations 中设置的循环次数,作用于RUN(X)下的所有action,而不作用于block下的action,即block下的action可以通过设置block的properties来指定循环的次数
一、问题引入:当我们在Run中添加一个Block0,并在Block0中添加需要的Action,同时给Block0设置运行逻辑,比如按顺序运行10次(Run Logic为Sequential,Iterations为10)。如果Block0中的Action含有参数,那么该参数应该如何设置?
其实参数设置最主要的有三个:Select next row、Update value on和When out of values。其中Update value on的值可选的是Each iteration、Each occurrence和Once。而它们的意思分别如下:
(1)Each iteration是指每次迭代时更新值,但这个迭代其实只针对Run-time Settings中,选项Run Logic的Run的Iterations,对Run中的Block是不起作用的。也就是说,当Run迭代了10次,同时Run中的Block0也迭代10次的时候,每Run一次,会更新一个参数值,而Block0迭代10次时都使用这个参数值,不会再去更新参数值了。也可以这样理解,每一个Block其实相当于我们自己在脚本里面写一个for循环,去循环调用Block中的Action,此时Each iteration当然只对Run有效。
(2)Each occurrence是指每次参数出现时就更新值。
(3)Once是指只取值一次。
显然,在这种情况下,Update value on只能选择Each occurrence。另外当我们选择了unique和Each occurrence后,LR要求我们设置Allocate …values for each Vuser,这个值与虚拟用户数和参数化值有关,例如:设置Allocate 5 values for each Vuser,虚拟用户数是10个,那么参数化的值至少需要50个(前提是选择了unique选项)