Jmeter跨线程组获取token(彻底解决因格式token报错)

将token设置为全局变量网上方式方法千千万,但是你就是获取token会失败,不是提示格式错误,就是提示无法获取token,没安装Jmeter的可以查看前两期教程,有详细介绍

在工作当中如果仅仅是一个线程组肯定是无法满足使用需求的,那么我们会使用多个线程组进行工作,这里不得不提及一个名词叫:全局变量 。

一、观察并获取token 

1、当我们登陆成功以后进行观察,会发现token的存在,提取token有两种格式(分别是:正则表达式提取,JSON格式提取)根据个人爱好吧,我一般喜欢正则因为平时接触的比较多

2、创建正则提取器,选择生成token的请求--添加-- 后置处理器--正则表达式;

(匹配数字一般为1,博主这里比较懒直接省略不写了,不要问正则为什么这样写,因为这是最最最基本的你们可以直接抄写就好了,实在很好奇可以进入廖雪峰的博客下进行系统学习一下,但是这个模板是固定的就是$1$,其中的1便是获取第一个token值)

 3、创建完正则后我们需要校验一下,是否提取成功了,可以创建调试取样器 Debug sampler

(选中线程组--添加--取样器--Debug sampler )

4、查看结果如下图则算是成功了

二、将token设置为全局变量

 1、上一步我们讲解的是采用正则的方式提取的token,这一步是将提取的token进行设置为全局变量;首先创建BeanShell后置处理器,路径如下图:

 

 3、打开函数助手,找到_setProperty函数,填写要设置的全局变量名称和要将哪个变量设置为全局变量,直接复制函数助手生成的函数字符串到BeanShell PostProccessor中,也可以BeanShell后置处理器中填写参数:${__setProperty(newtoken,${g_token})};  其中g_token为token提取器中引用的名称,一定要保持一致;

三、调用全局变量token

1、在计划下面进行调用全局变量,${__property(newtoken)} 或 ${__P(newtoken)}   (一定要注意不要马马虎虎的将名称或则格式写错,最容易出错的地方就是这里了,越是简单的地方约容易被大意忽略)  第二行(有些版本不适用,为避免出错可以不用填写)的格式根据需求可以在抓包中有体现,抓包工具大家可以看前面两张的fiddler 或者开发者抓包即可;

 

 总结一下:讲到这里已经就接近尾声了,后面创建的线程组中皆可调用全局的token,如果有画蛇添足的非要在每一个线程组中加一个http请求头管理器也是可以的,但是一定要将http请求头管理器的参数写正确,别给蛇画个半只足就难看了;(目前很多文章都有误导性作用)

posted @ 2022-01-07 11:02  ganfd  阅读(1297)  评论(0编辑  收藏  举报