背景
这篇说一下jmeter的两个线程组之间如何传递变量:例如第一个线程登陆a系统,拿到sid然后第二个线程里的请求将该值作为一个header项。
本篇仅为说明如何应用,实际大多数场景都可以使用仅一次控制器来完成,例如登陆后访问其他接口。
例子
新建测试计划,因为要跨线程,下图勾选 (很多人照着网上教程看怎么传第二个线程都不对,都是因为这里没勾选!)
新建两个线程组,各有一个http请求
第一个线程组请求下新建正则表达式提取和一个BeanShell后置处理
第二个线程组http请求前加一个http信息头管理器
登陆请求
正则表达式提取
BeanShell后置处理器
线程组2中
http信息头管理器
http请求随便写
执行查看第二个线程组中的结果树
可以看到,跨线程组传递f6sid成功。
补充说明
除了使用内置的函数,也可以通过在第一个线程组的BeanShell后置处理器使用 props.put赋值,在第二个线程组BeanShell前置处理器中使用通过props.get取值。
赋值取值上,vars和props非常相似,但是vars仅可用于本线程,而props可以跨线程。
线程组1中BeanShell后置处理器
线程组2中http请求下新增BeanShell前置处理器
线程组2中http请求中引用变量
查看线程组2结果树