小豆豆最近两天在进行压力测试的时候,遇到了token在两个线程之间传递的问题。
简单描述如下:
一共2个线程
线程1实现了账户登录并获取token
线程2 获取到线程1 的token之后,继续进行第二步骤的系统操作。
分析思路如下:
项目目录结构:
温馨提示:线程1与线程2要是并行的结构体,并且都在总线程体之前,查看结果树也是要和线程1、线程2并行的。
小豆豆因为结构体不对,花费了很久时间才总结出的经验之谈。
下面来分别介绍每个线程每个步骤都做点了什么内容吧~
线程组
线程组-线程1获取token,http请求
线程组1,正则表达式获取token(注意这个缺省值8766g哦,后面会派上大用场~)
线程1-响应断言(可选步骤,删除也没大关系的~)
线程1-http信息头管理器
线程1 BeanShell-后置处理程序
线程2-http请求
线程2-http信息头管理器(必须,根据API接口文档,没有该步骤,请求会失败的)
查看结果树:(注意位置,它是和线程1、线程2并行排列的哦~)
画龙点睛:
出现问题了,可以先去验证一下是否有获取到token;可以直接把token显示在下一个请求上,这样很明显看到。
(比如直接在线程2的名字上写${token},线程组1,正则表达式获取token时候的默认值填写8766g,设计巧妙之处在于,如果获取不到token,在查看结果树中,就会显示8766g)
Beanshell用来把token设置成全局变量,这样就可以跨线程组来使用变量了。
不过,使用变量,就是不是 t o k e n 全 局 的 要 {token} 全局的要 token全局的要{__property(token)}
KaTeX parse error: Expected group after '_' at position 2: {_̲_setProperty(to…{token},)}这句话是把正则获取到的token变量设置成全局变量 token