一、写在前面的话:
在我们平常的接口测试中,大部分的接口都是需要鉴权,只有通过鉴权(OAuth、Token、Session和Cookie等几种),才可以确保只有合法的用户才能访问系统接口。这种上一个接口返回的数据作为下一个接口的请求参数,在使用Jmeter做接口测试或压测时,我们首先要登录(获取到token),然后带着token去进行下一个接口访问。
二、场景一:同线程组内接口之间的值传递:
1.用户登录
2.正则提取器,获取登录token
引用名称:存储匹配结果的变量名称,可以是一个值也可以是一组值
正则表达式:匹配的正则表达式,正则表达式里面可以有多个正则
模板:正则表达式提取器类型,样式为:$n$,模板可自由组合,拼接组成新的字符串内容。
模板为:$0$,则为整个表达式匹配到的内容;
模板为:$1$,则对应正则表达式中的第一个小括号内()匹配的内容;
模板为:$2$,则对应正则表达式中的第二个小括号()匹配的内容;
模板为:$1$$2$,则把2个()所匹配的内容拼接起来,$1$aa$2$拼接两个变量的内容,并在中间加上aa
匹配数字:-1代表取全部数据,0代表随机取值,1代表取第1个数据,2代表取第2个数据
缺省值:找不到匹配时的值
3.使用提取到的token值
4.点击运行查看结果
总结:同线程组内不同接口之间变量值的传递,可以直接引用变量名使用即可实现值的传递。
三、场景二:跨线程组之间接口的值传递:
1.用户登录
2.正则提取器,获取登录token
3.后置处理器,设置成全局变量
使用后置处理器,将上一步正则提取器表达式提取出来的token值,设置成全局变量。可以使用如下语句:${__setProperty(token_123,${token},)};
4.跨线程组使用变量
上一步设置的全局变量名:token_123,直接使用:${__P(token_123)}
5.点击运行查看结果
总结:跨线程组之间,不同接口之间变量值的传递,需要将变量设置成全局变量后,引用全局变量名即可实现值的传递。