不同线程组之间的参数共享
思路:创建两个线程组,第一个线程组里面的 “登陆接口” 中登陆成功后获取到的token,要作为第二个线程组的http请求头中的参数信息
结构如图
第一步:测试计划–>>勾选第一个选项
【ps:很多时候跨线程无法获取到参数就是没有勾选这个选项导致的】
第二步:添加线程组–>>添加“http请求”,将接口相关信息填写完成,可以再添加一个“查看结果树”,方便查看接口请求是否成功
第三步:登陆接口请求成功之后,添加一个后置处理器来提取token,我这里使用的是“正则表达式提取器”
第四步:添加一个后置处理器BeanShell PostProcessor来将token设置为全局变量newtoken
注意:jmeter本身的内置函数中,“__setProperty()” 函数可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用 jmeter属性的函数“${__P(parameters,)}”来调用相应的属性即可。
第五步:添加第二个线程组,第二个接口“创建任务接口”,填写好相关的接口信息
【ps:因为这个接口需要用到设置为全局变量的token,如果只是在请求参数中需要用到token的话,可以直接调用${__P(newtoken,)},但是我这个是在请求头中用到,所以我还需要第六步】
第六步:添加一个配置元件“HTTP信息头管理器”,使用${__P(newtoken,)}获取token
因为我的接口文档说明如下:
最后,也可以使用前置处理器BeanShell PreProcessor来获取全局变量newtoken