美文网首页
Jmeter提取token并在不同线程使用

Jmeter提取token并在不同线程使用

作者: 0893051f5f11 | 来源:发表于2018-05-19 10:34 被阅读0次

接口测试中,发送的请求常常是带token的请求。
首先在登录系统时会获得token,然后使用后置处理器中的正则表达式提取token,最后使用BeanShell工具设置全局变量。
这样就可以在自动调用token了。

  • 观察响应体内容


    获取响应体中token.jpg
  • 添加正则表达式提取器


    添加正则式表达式提取器.jpg
  • 正则参数设置
    1引用名称:就是变量名,调用使用{name} 2**正则表达式**: 用于将需要的数据提取出来,()括号里表示你要的数据,**i(使用方法见之前的文章)** 3**模板**: $$表示你要是用那个正则表达式那个模板获取的值。-1:表示取所有模板(括号内容)0:表示随机取模板1:表示取第一个模板2:表示取第二个模板 以此类推:n$:表示取第n个模板
    4匹配数字:-1表示匹配全部值,0表示随机取值,1表示第一个值,2表示第二个值
    5缺省值:这个如果没有匹配到,给它定义的一个默认值

    正则式参数设置.jpg
  • 查看提取内容
    如果多个正则你要看你到底调用哪个值来定,这儿待会下面截图例子一看就明白
    首先添加Debug Sampler:

    添加Bebug Sampler.jpg
    然后点击启动,发生请求,
    在查看结果树中查看Debug Sampler:
    Debug Sampler中的匹配结果.jpg
    可以看到TOKEN已经被赋值,证明正则式匹配成功。
    Ps:TOKEN_gTOKEN_g0TOKEN_g1,都是可以被调用的。
    这里因为只匹配到唯一值,所以没有被迭代。

在此线程内的调用方法${TOKEN}${TOKEN_g0}等等。

  • 跨线程调用
    以上正则式提取数据的调用只能用于同一线程内,那么跨线程调用,还需要添加BeanShell PostProcessor,设置全局变量。


    添加BeanShell PostProcessor.jpg

    在Script里面写入其中一段代码:

//设置全局变量方法1
{__setProperty(token,${TOKEN})}; //将变量TOKEN的值设置为全局变量token
//设置全局变量方法2
String token=vars.get("TOKEN");
props.put("token",token); //设置全局变量
props.get("token"); //提取全局变量

在其他线程中,可以通过${__P(token)}来调用登陆获取到token了

可以从下图参考下目录结构图及全局变量调取


在其他线程调用全局变量.jpg 微信关注.png

相关文章

网友评论

      本文标题:Jmeter提取token并在不同线程使用

      本文链接:https://www.haomeiwen.com/subject/uqoxdftx.html