接口测试中,发送的请求常常是带token的请求。
首先在登录系统时会获得token,然后使用后置处理器中的正则表达式提取token,最后使用BeanShell工具设置全局变量。
这样就可以在自动调用token了。
-
观察响应体内容
获取响应体中token.jpg
-
添加正则表达式提取器
添加正则式表达式提取器.jpg
-
正则参数设置
1引用名称:就是变量名,调用使用-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_g
、TOKEN_g0
、TOKEN_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了
可以从下图参考下目录结构图及全局变量调取
![](https://img.haomeiwen.com/i3100708/e9a212aa5de2b27a.jpg)
![](https://img.haomeiwen.com/i3100708/c386feba93849f7c.png)
网友评论