目录
- 一、响应的提取--json提取器(下)
- 1.有多个的话,怎么获取某一个呢
- 2.get请求参数的类型没有json格式
- 3.
json
中的key-value
键值对顺序是无序的 - 4.重点:一个json提取器写多个提取式
- 二、性能测试中,关联的时候会用得上:响应的提取
- 三、正则提取器
- 1.万能正则式:
.*?
- 2.写正则提取式
- 3.配置正则表达式提取器并运行
- 4.Jmeter正则表达式
- 1.万能正则式:
一、响应的提取--json提取器(下)
1.有多个的话,怎么获取某一个呢?
可以使用列表,也可以使用索引的方式去提取。
比如,它给你提取出5个,要返回第三个位置的值:填写3
要把5个都拿到:填写-1
填写-1
运行结果
0是随机取了一个。-1是取所有的值。
运行结果
matchNr=6
代表总共匹配到6个。matchNr
可以作为一个变量名称直接用。
2.get请求参数的类型没有json格式
没写消息头,运行成功,是因为get请求参数的类型没有json格式,约定俗成的不用这种方式。
(url
后面是parameter
。json
本身传也是字符串,但是url
后携带参数有长度限制,超了就传不了了,一般不用。)
运行结果
3.json
中的key-value
键值对顺序是无序的
如果设置的是2,只想取第二个位置的值。返回的结果值是田园时蔬。但是能保证每次返回的都是田园时蔬吗?
运行结果
不能。因为json
中的key-value
键值对顺序是无序的。
有可能这个大括号里面的整个内容在前面,那个大括号里面的整个内容在后面
比如这个大括号里面的内容:"id":1,"typeId":1,"typeDesc":"早晨快餐"
,id、typeId、typeDesc
这三个的顺序也是无序的。
但是肯定的是"id":1,"typeId":1,"typeDesc":"早晨快餐"
这三个key和value的值是一一对应的。
4.重点:一个json提取器写多个提取式。
$..
再写一个json
提取器。从性能的角度来说,多一个元件会多消耗一些资源。
一个json
提取器写多个提取式。
1)用英文的分号;
例如..typeDesc;..typeId。
没填写Default Values,运行后就报错了
在一个json
提取器中,要提取出多个值的时候,一定要填写Default Values
,否则会报错,报错提示:数组越界了。
填写了Default Values
,当提取不到结果的时候,就会返回默认值。
自己定义个Default Values
值,这个是随便定义的默认值,例如 td;tid
。
配置json提取器
运行结果
2)多个之间用逗号会报错
多个之间是用的英文分号,用英文逗号不行。
运行后报错
运行后报错
要提取几个值,这些地方就要对应的填写。
运行结果
二、性能测试中,关联的时候会用得上:响应的提取。
比如,在注册接口提取出来了jqid
:
登录的接口用到从注册接口提取出来的值:jqid
,作为传入参数:
三、正则提取器
session
不会在响应信息里面,所以就不能用json
提取器,用正则提取器。
正则提取式: 左边界(正则式)右边界
1.万能正则式:.*?
万能正则式,能万能到什么程度呢?
除 换行符(n
) 之外的,都可以匹配。
万能正则式把不想要的东西也匹配出来了,也就是说不精确。
2.写正则提取式
添加后置处理器--->正则表达式提取器。在察看结果树中选择RegExp Tester
,然后写正则提取式:
mobile":"(.*?)"
,点击Test。
找左边界的时候要找能看的出来的特征,例如:mobile":"
只要是在它右边的,都算是右边界。但是只取最小右边界:”
因为json
中的key-value
键值对顺序是无序的。
万一这个mobile
的顺序显示在了最后面的这个位置,最后的这个位置,后面除了”
,没有逗号了。
是一个列表里面再嵌套了一个列表,无需关注这个。
3.配置正则表达式提取器并运行。
模板的固定写法:数字
正则表达式提取器
从数字1开始,数字1代表取第一个(),数字2代表取第二个()。
因为只有一个(),所以取第一个()。
运行结果
4.Jmeter正则表达式
常用正则式:
- 左右边界值,中间匹配内容用
()
代表用户括号内正则式匹配。 .
匹配除换行符以外的所有字符。*
匹配0次或多次。?
匹配0次或1次。.* .
d ld [0-9]
lwlw
英文字母或数字的字符串。
重点关注我圈出来的部分
重点关注我圈出来的部分
先用万能正则式,不行的话再改改。
脚本链接:
链接:https://pan.baidu.com/s/18-nY9hcjuqT4AIBLkRkPQg?pwd=1234 提取码:1234