目录
- 一、响应的提取--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次或多次。匹配1次或多次。?匹配0次或1次。.* .d ld [0-9]lwlw英文字母或数字的字符串。

重点关注我圈出来的部分

重点关注我圈出来的部分
先用万能正则式,不行的话再改改。
脚本链接:
链接:https://pan.baidu.com/s/18-nY9hcjuqT4AIBLkRkPQg?pwd=1234 提取码:1234


