jmeter中的提取器
什么是提取器
在实际接口测试中经常会用到 其他接口的 返回数据,举个例子 登录请求后 要取出 响应中的token,交给后续接口使用。 完成提取 token工作的元件就叫提取器, 提取器根据提取原理不同划分了很多的提取器,最常用的 是 正则表达式提取器 和 json提取器。
正则表达式提取器
顾名思义,就是使用 <ins style="box-sizing: border-box;">正则表达式</ins> 来 提取 想要的数据
什么是正则表达式
正则表达式 是编程工作中经常使用的一个知识点,它规定了一些特殊符号的含义,用来描述一种字符串的匹配模式。
常用的匹配符号
正则表达式演示
在Jmeter中的实际使用
假设我们要提取登录接口中token的值
-
首先在接口中右键点击添加 正则表达式提取器
-
输入内容
下面来逐个解释:
引用名称:取值成功后要给这个值取个变量名,方便后续使用,我这里填的是 login_param,如果我在其他元件使用这个值的时候 写 ${login_param} 就代表这个取到的值
-
正则表达式:<ins style="box-sizing: border-box;">“token”:"(.*?)",</ins> 因为我们要取token,根据报文得知值的前后内容,
- ():括起来的部分就是要提取的。
- .:点匹配任何字符串。
- *:代表匹配0个到多个字符
- ?:不要太贪婪,在找到第一个匹配项后停止。
-
简单概括一下就是, 从"token":“开始匹配所有的字符,直到碰到第一个”,为止,把中间的所有字符串取到
模板:模板:用3$等等,表示解析到的第几个值给title。如:<math><semantics><annotation encoding="application/x-tex">1</annotation></semantics></math>1表示解析到的第1个值,下个案例会实战
匹配数字:如果表达式匹配到多个目标,取第几个,一般填 1,就行了
缺省值:如果参数没有取得到值,那默认给一个值让它取
-
添加一个调试取样器
这个元件可以查看jmeter运行时的变量变化,在名字后面加上${login_param}
-
执行脚本看看结果
-
再添加一个HTTP信息头管理器,在线程组外面添加,输入token
同一个响应中提取两个参数
假设我们要提取登录接口中token的值 和 userName的值
-
复制刚才的请求 和 调试取样器
-
修改正则提取器
“token”:"(.?)",“userName”:"(.?)" : 这里面有两个正则表达式,多以对应的模板改成 <math><semantics><annotation encoding="application/x-tex">1</annotation></semantics></math>1<math><semantics><annotation encoding="application/x-tex">2</annotation></semantics></math>2
-
执行一下看看结果
这个时候 login_g1代表token,login_g2代表userName,这就是匹配多个值的用法,注意模板和表达式的对应关系就好了