话不多说 直接开撸
上图可以看出,有两个请求,其中第二个请求返回了登录超时,结合第一个登录接口来看,这个是需要header请求内容的也就是 token;当然设置一个token又怎么可能难得倒我们,无非就是在HTTP Header Manager中添加一个键值对而已;但是同学们,有没有想过如果项目中所有的接口都需要,你就粘贴复制一百次吗?如果另一个线程组需要,你就重新配置一次登录接口吗?当然我们肯定不会这么做,那么下面咱们就根据这两个问号来解答这个问题!!!
单个线程组内变量的调用
右键点击"user_login" → add → Post Processors(后置处理器) → Regular Expression Extractior(正则表达式提取器)- Name of created variable: 用户引用变量名
- Regular Expression:正则表达式
- Temolate:模板
$1$
表示取n次 - Match No(0 for Random) 0表示随机,1表示取第一个值
- Default Value:缺省值,没有时用此值
以取值token为例
跨线程组调用变量
下图可以看出,咱们又增加了一个activity_share的接口,但是因为我们没有携带token的原因,又登录超时了,而此时我们就不能使用 Regular Expression 的方法来解决此问题了,此时我们又需要两个新的组件;- 右键点击"user_login" → add → Post Processors → BeanShell PostProcessor;
-
右键点击"activity_share" → add → Pre Processors(前置处理器) → BeanShell PreProcessor; 如下图
然后咱们在 Post Processors 的script处输入
// 获取token值
String token = vars.get("token");
// 把token值上传
props.put("token", token);
既然有了上传肯定有人接收,最后在 Pre Processors 的 script 处输入
// 接收 token
String token = props.get("token");
一定注意引用格式${__P(token,)}