最近刚入职一家公司,要实现一个恢复出厂->check->升级->check->循环 的自动化测试小脚本。开始时用jmeter调通相关接口的,就想直接用jmeter实现。在处理等待恢复出厂和升级成功这两个步骤结果的时候,很怀念selenium2里的waituntil 功能。研究了下jmeter的while循环,最终用while循环和实现了一个类似waituntil的功能。
主要分三个模块 初始化,循环体,超时判断。循环中判断
1 初始化
本例中 初始化三个参数。开机时间defalt,开机时间restore,whilecount。
开机时间defalt和开机时间restore均初始化为接口当前获取到的开机时间,循环中开机时间defalt不变,每次循环均刷新开机时间restore,如果两个时间不一样则退出循环。
whilecount 初始化为0,循环中自加1,超过最大循环次数,则退出循环。
whilecount参数初始化用beanshell实现:
2 循环体。包括判断条件,刷新开机时间restore,sleep,whilecount++
判断条件:(注意这里的值一定要初始化)
sleep调整每个循环的延迟,通过sleep×最大循环次数,可以控制这个waituntil模块的超时时间
sleep用Constant Timer实现:
while++用beanshell实现:
3.超时判断
由于while有两个条件,
${__javaScript(${while_count}<${max_while_count} && "${opentimestamprestore}"=="${opentimestampdefault}")}
所以结束时得要判断一下是不是超时退出的。即判断${while_count}==${max_while_count} ?
这个用beanshell实现,return whilecount++的值,在加响应断言即可
主要实现就是这样。记录下防止忘记,同时为需要的网友提供思路。