使用jmeter进行接口测试时,经常会遇到如下场景:一个接口的返回值作为下一个接口的参数传参,这个时候需要参数关联。jmeter常用参数关联的方式有两种:json提取器和正则表达式提取器。
json提取器
json提取器面板介绍,如图:
image.pngimage.png
接口返回值如下,提取token,则表达式为:$.token(如果有列表,则用[索引])
image.png在其他接口使用${参数引用名},列子:
image.png
正则表达式提取器
使用正则表达式提取器需要一定的正则表达式知识,此次只会介绍jmeter万金油正则表达式,使用大多数场景
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表+号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0次或1次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0次、1次或者多次)
(.*):贪婪模式,匹配尽可能多的字符
(.*?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。
贪婪与非贪婪模式区别:
image.png
界面如下,每个参数图中已有介绍,正则表达式不仅可以提取主体,也可以提取信息头、响应信息等等,和json提取器相比,适用范围更加广泛
image.png
正则表达式需要注意是否有空格,一般不需要空格。
image.png
需要提取的接口返回,提取access_token:
image.png
则正则表达式为:access_token":"(.*?)","token_type
(.*?)为jmeter万金油正则表达式,适用绝大多数场景,即使不会正则表达式,也可以使用,套用即可,简单方便。
{"data":{"access_token":"F2XV5UV2edXi6vbFqtge0ZuZvzpCtuWyQiTtXNHS","token_type":"Bearer","expires_in":"604800","refresh_token":"8Gu99i7GnDS27uLBu39yPvjZ71QwpTT10alzRYcJ"}}
==》
{"data":{"access_token":"(.?)","token_type":"Bearer","expires_in":"604800","refresh_token":"8Gu99i7GnDS27uLBu39yPvjZ71QwpTT10alzRYcJ"}}
==》
access_token":"(.?)","token_type
==》
token":"(.*?)","token
调用的方式和json提取器相同:${参数的引用名}
网友评论