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

接口测试中,发送的请求常常是带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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,161评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,764评论 1 92
  • 1 Jmeter安装配置 使用Jmeter前首先要安装JDK,配置JDK环境变量。Jmeter不需要安装,下载后...
    茶小汐阅读 8,141评论 0 8
  • 闪着金色辉煌的躯体被帝国侮辱 那些不堪的回忆被揉碎 带着血的恨被埋在灰烬之下 死亡的头颅在没有黎明的黑夜里长眠 这...
    酒鬼匿名诗人阅读 2,806评论 0 0
  • 鼓励,是教养孩子最重要的部分。 一个行为不当的孩子是气馁的孩子。 我们要认同孩子的难过;我们需要经常提醒自己,我没...
    Andy妈妈阅读 1,571评论 0 0

友情链接更多精彩内容