参考此篇博文:jmeter-跨线程组传参的两种方法
https://www.cnblogs.com/fanf/p/17346008.html
这里是自己常用的一种方法:
如果一个线程组的请求用到另一个线程组的参数,需要将参数转为全局变量来使用。
以token来举例,因为token这个请求有请求头,跟要用到token的请求的请求头不一样,所以只能单独分开放在不同的线程组。线程组中的参数是有作用域的,不能直接用到另一个线程组,需要将参数转为全局变量后才能被其他线程组调用
操作步骤如下:
1.先创建一个线程组,放获取token的请求,请求下添加一个json提取器填写表达式和变量名称token,将token值提取到变量token中
2.复制json提取器的变量名称,点击工具-函数助手,选择setProperty函数(这个函数是把局部变量存储为全局属性),输入一个自定义的变量名称,在第二个输入框调用json提取器的参数:${token},点击生成,复制生成的表达式
3.在token请求下添加一个beabShell后置处理程序(必须放在请求下,与json提取器同级(犯过的错误1:没有同级放,导致一直调不通)),将第二步复制表达式粘贴到脚本框下
4.添加查看结果树
5.再添加一个线程组,放新的HTTP请求
6.打开函数助手,选择P函数(通过P函数引用全局属性),属性名称输入beanShell中定义的属性名称TOKEN,点击生成,复制生成函数表达式。注意:P函数只需要输入属性名称而不是调用参数
7.将表达式放到新HTTP请求中需要token的位置就可以了。如果其他线程组也需要token,只需要将P函数生成的表达式放到新HTTP请求的token位置即可
8.为了方便调用,也可以在线程组添加一个用户参数,名称输入一个新的变量名称Token,用户1输入P函数的表达式。
9.再将这个新变量名称放到HTTP用到token的位置即可${Token},不过这个用户参数只能作用与本线程组,其他线程组不行。
注意:使用到跨线程组传参的话就有顺序要求,必须在测试计划勾选独立运行每个线程组(犯过的错误2:没有勾选,导致有时可以获取到有时获取不到)