Jmeter-正则表达式获取token,并设置成全局变量

客户登录之后,服务器会返回token,作为合法用户的标志,才可以做后续的一些操作,如下单等

  • 正则表达式提取token。

https://www.cnblogs.com/tudou-22/p/9566894.html

Jmeter-正则表达式获取token,并设置成全局变量_第1张图片

Jmeter-正则表达式获取token,并设置成全局变量_第2张图片

 

 

  • 将token设置成全局变量

有些参数需要夸线程调用的时候,就需要将变量设置成全局变量

方法一:BeanShell Sampler+HTTP Cookie 管理器,使用时可用 ${__P(newtoken,)} 或 ${__property(newtoken)}调用

(1)添加取样器:BeanShell Sampler,切记没有分好

log.info("用户名::"+vars.get("token"))

${__setProperty(newtoken,${token})}
${__setProperty(newuser,${user})}

Jmeter-正则表达式获取token,并设置成全局变量_第3张图片

(2)添加配置原件:HTTP Cookie 管理器,添加cookie管理器,跨线程调用的时候,默认调用token。user和token调用方式如下

${__property(newuser)}

${__property(newtoken)}

Jmeter-正则表达式获取token,并设置成全局变量_第4张图片

 

或 使用BeanShell 后置处理器,设置成全局变量,使用时可用 ${__P(newtoken,)} 或 ${__property(newtoken)}调用

步骤一:BeanShell 后置处理器配置

/*这个部分可写可不写,这是输出的地方不一样而已
 * 这个地方的输出在控制台
String token = bsh.args[0];
print ("用户名::"+token);
*/

${__setProperty(newtoken,${token},)}
${__setProperty(newuser,${user},)}

Jmeter-正则表达式获取token,并设置成全局变量_第5张图片

步骤二:HTTP Cookie 管理器

${__P(newtoken,)}

${__P(newuser,)}

Jmeter-正则表达式获取token,并设置成全局变量_第6张图片

具体操作可参考:

https://www.cnblogs.com/allen-zml/p/6552535.html

注:BeanShell PostProcessor和BeanShell Sampler有什么区别呢,它们的作用域不一样,BeanShell PostProcessor的作用域是在它上级的HTTP请求,如上图,他在用户登录接口请求下级。BeanShell Sampler的作用域是当前线程,如上图,可以和用户登录同一级${__P(newtoken,)} 或 ${__property(newtoken)}都可以调用。

遇到的问题

1、登录成功了,在请求中的cookie值不是你提取的。

Jmeter-正则表达式获取token,并设置成全局变量_第7张图片

这是因为在cookie管理器中,cookie政策应选择standard

Jmeter-正则表达式获取token,并设置成全局变量_第8张图片

2、账号密码都正确,访问接口的时候提示“请输入登录账号”,则应考虑头文件是否少了:Content-Type: application/json

Jmeter-正则表达式获取token,并设置成全局变量_第9张图片

Jmeter-正则表达式获取token,并设置成全局变量_第10张图片

 

你可能感兴趣的:(Jmeter)