JMeter通过正则表达式、JSON提取器获取变量 使⽤Jmeter开发测试脚本的过程中,经常需要对响应结果进⾏提取变量,本⽂就介绍两种经常⽤到的⽅法,⼀种是正则表达式提
取器,⼀种是JSON提取器
本次介绍⼀种经常⽤到的业务场景,⾸先登录获取Token,然后将获取的Token赋予到HTTP信息头,供其它接⼝调⽤
⼀、JSON提取器
1. JSON提取器是专门⽤来对返回的响应结果是application/json格式的报⽂进⾏提取,如下所⽰
2. ⾸先在需要提前变量的HTTP请求点击右键》添加》后置处理器》JSON提取器
3. JSON提取器,变量应⽤范围,默认选择Main sample only即可
4. 下⾯给⼤家讲解写怎么写JSON PATH,只有写出正确的JSON PATH,才能获取到我们需要的变量值,默认我们jmeter的察看结果树显⽰的结果是Text⽂本格式,这样我们就不能快速的看出变量的层级,所以需要把查看结果树的显⽰格式改成JSON Path Tester,该查看结果树还⽀持直接对结果进⾏调试,这是很多刚⼊门的⼩伙伴不知道的⼀个功能,很⽅便,如下所⽰
5. JSON的基本语法就是$.然后后⾯跟要取字段名,⽐如要取data,就直接写$.data,如果要取msg,就直接写$.msg如下所⽰
6. 如果还要往下取值,就像⽂中的token,就需要继续在后⾯加".",(.代表⼦元素),然后跟字段名,如$.ken
7. 在给⼤家介绍⼀种结果为数组格式的怎么取值,如下图所⽰,results保存了数组格式的值,先要知道数组索引,然后才能继续读取数组下的值,学过python的应该就清楚,只要从0依次递增就能取到需要的值,如resulst[0],resulst[1],⽐如我想取第⼀个数组中的name 值,只需要填写$.sults[0].name
8. 实际⼯作中,可能返回的查询结果经常会变化,这时候如果在写死数组索引的位置,⽐如上⾯给⼤家介绍的,写成
$.sults[0].name,如果系统新增了项⽬,可能就会导致取的值不正确,这时候就需要⽤到另外⼀种取值⽅式,$…results[?
(@.name==‘function’)].id,该json path可以通过⼀个变量定位到⾃⼰所在的数组的索引,然后在去取需要的id,⽐如
automation这个值是唯⼀值,就可以通过该值取到需要的值,语法如下$…然后后⾯跟数组名称,本⽂为results,然后跟[?
(@.name==‘function’)],其中name是序列中的⼀个唯⼀值,可以根据需要修改,function是name实际为什么值就填什么,最后在加"."后⾯跟你需要取的字段名如id,pah都⾏,只要在这个数组中存在
9.
0. 我们之前通过json path取到的变量token,现在需要写⼊到信息头管理器,这样下⾯的请求才会被调⽤到,格式为${token}
1. JSON PATH语法如下列表,具体语法使⽤规则,还需要⼤家多多尝试,可以在察看结果树中切换成JSON Path Tester模式进⾏测试
JSONPath Description
$表⽰根元素
@当前元素
. or []⼦元素
n/a⽗元素
…
正则表达式提取中文递归下降,JSONPath是从E4X借鉴的。
*通配符,表⽰所有的元素
n/a 属性访问字符[]⼦元素操作符
[,]
连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
[start: end:step]
数组分割操作从ES4借鉴。
()应⽤过滤表⽰式
()脚本表达式,使⽤在脚本引擎下⾯。
n/a
Xpath分组
JSONPath Description 12. 末尾在给⼤家介绍JSON怎么通过⼀个提取器提取多个变量,多个变量时则每个变量⽤“;”间隔开,正则表达式、匹配序列、默认值
也⼀样,需要⽤“;”隔开,下⾯先介绍当正则表达式取固定的序列的时候,填写的规则如下图
13.
当表达式取任意序列时(匹配所有符合的值),填写规则如下图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论