jmeter跨线程组传值与循环控制器
背景:
之前如果压测请求角色列表接口,存在压测一个列表接口同时请求一次登录接口,这样是不符合测试场景的,需求:登录之后不再需要再次登录(或不需要经常登录),只需要运行请求列表接口
解决方法一:跨线程组传值
将登录接口和请求接口分别放置到两个线程组,分开管理
待解决难点问题:
- 线程组的执行顺序,线程组之间是并发执行,
- 线程组之间参数传递存在问题,已知正则表达式提取的token无法传达到请求列表线程组
实现步骤:
1.在登陆接口(登录线程组),添加正则表达式提取器(用来获取token),接着再添加一个后置处理器BeanShell PostProcessor
token正则表达式
beanshell后置处理程序:参数填写正则表达式中“引用名称”,脚本项输入动作语句${__setProperty(token1,${token},)};
2.在线程组2添加一个前置处理器BeanShell 预处理程序,录入脚本String a1=props.get("token1");vars.put("token2",a1)
3.由于线程2中BeanShell PreProcessor将新的token1定义为token2,因此在线程2中可引用${token2}来提取token
4.查看结果树,是否将token值传入
解决方法二:循环控制器
循环控制器
循环控制器放在登录接口下面,然后把请求列表请求放在循环控制器下,这样可以实现 登录请求执行一次,通过循环控制器,请求列表请求可以执行多次