jmeter 【Regular Expression Extracto】r和【JSON Extractor】使用
在Jmete中我们经常遇到需要把当前接口返回内容用于下一个接口请求,应用场景:登录接口返回的cookie或者token等,下面就简单描述一下两种提取器的使用和需要注意的事项:
1、【Regular Expression Extractor】
这个放在提取值的线程的子目录下:
Apply to:待研究;
Field to check:取值的地方,
Reference Name:取得值后存放值的变量名,引用时的格式为:${变量名}
Regular Expression: 正则表达式
Template: $1$指匹配到的第一个正则表达式的内容,依次类推
Match No: 选择第几次匹配到的值,有可能一个Sampler下面匹配到多个值,这时这个变量就可以用到,0代表随机取,-1代表取全部值,其余正整数就是代表取第几个匹配的值,
Default Value: 默认值,如果没有匹配就使用默认值,
在被提取值中增加【Debug PostProcessor】,然后在线程的结果树中查看是否提取到数据。
关于正则表达式的一些规则描述:
1.1、说明:
(1)例子:"data":"(.?)"
()括起来的部分就是要提取的。括号里面的就是正则匹配的规则;
(2).:贪婪匹配原则,即全部匹配;
.*?:非贪婪匹配,匹配成功一次即可;
2、【JSON Extractor】
可以在结构树测试中测试提取表达式是否能提取到数据:
可以在当前线程中,JSON Extractor对应的请求后添加【Debug PostProcessor】查看是否提取到内容,
如:
需要注意,如果当前提取值是好几个,但是只需要提取其中一个可以用数组来提取,如:$.data.content[*].id。
3、登录接口获取token
用到:【Regular Expression Extractor】、【HTTP Header Manager】
上面两个都放在登录线程下的子目录里面,正则表达式的填写参考上面的第一点,【HTTP Header Manager】,请求头管理工具,把正则表达式提取到的内容填写好,方便后面的线程使用,需要注意的是,使用这个请求头工具里面的参数时,线程必须在请求头对应的线程之后,且请求头内容只能在当前线程组使用,跨组不行。