前言:
在测试工作中,我们经常会遇到,在执行某项业务之前,必须要先登录,只有登录后才能执行某项业务工作的场景,比如:你必须登录后才能执行查询操作,你必须登录后才能执行新增操作,否则就会报错没有权限。这实际上是在登陆时系统会产生一个token值,在之后的所有业务活动中都会伴随着这个token值(就像古代皇宫里的令牌似的,有牌才让你进)。
在接口测试和性能测试时就要用到token值的传递。
介绍两个组件
1. HTTP信息头管理器
用于储存请求时要包含的信息头,其中就包含token
HTTP请求默认值,
一般是为了省去填写相同的数据,放在全局位置,然后线程组下的请求就可以共用这个ip端口之类的了
1、用户登陆时产生token
一般情况下,token值都是在登陆时产生的随机的固定长度的字符串
2、提取token
提取的这个正则表达式为:
"token":"(.+)",
(1)但是要注意(.+)的匹配是一次或多次,也就是说如果不是token 而是taskid有多个taskid的你就提取不到
(2)这个时候我们就要用(.+?)这样就是:不要太贪婪,在找到第一个匹配项后停止。
"taskId":"(.+?)",
第二种方式是最稳妥的
3、将token设置为全局变量
${__setProperty(newtoken,${tokenlist},)}
4、在全局HTTP信息头中引用
名称:token 值: ${__property(newtoken)}
在这个全局的信息头中引用后,后续所有的请求都可以不用再加信息头了,因为这个是全局的,不管哪个请求执行,都会有这个全局信息头参与一同请求
备注:如果是录制的请求,可能每一个http请求都会带一个信息头,也可以使用jmeter的查找与替换功能,将固定token值替换成 ${__property(newtoken)}
这时,全局的http信息头管理器就可以禁用了