前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级性能测试系列《14.响应的提取--json提取器:一个json提取器写多个提取式、正则提取器:万能正则式怎么用?》

高级性能测试系列《14.响应的提取--json提取器:一个json提取器写多个提取式、正则提取器:万能正则式怎么用?》

作者头像
清菡
发布2022-06-21 15:37:55
2.7K0
发布2022-06-21 15:37:55
举报
文章被收录于专栏:清菡软件测试清菡软件测试

目录

  • 一、响应的提取--json提取器(下)
    • 1.有多个的话,怎么获取某一个呢
    • 2.get请求参数的类型没有json格式
    • 3.json中的key-value键值对顺序是无序的
    • 4.重点:一个json提取器写多个提取式
  • 二、性能测试中,关联的时候会用得上:响应的提取
  • 三、正则提取器
    • 1.万能正则式:.*?
    • 2.写正则提取式
    • 3.配置正则表达式提取器并运行
    • 4.Jmeter正则表达式

一、响应的提取--json提取器(下)

1.有多个的话,怎么获取某一个呢?

可以使用列表,也可以使用索引的方式去提取。

比如,它给你提取出5个,要返回第三个位置的值:填写3

要把5个都拿到:填写-1

填写-1

运行结果

0是随机取了一个。-1是取所有的值。

运行结果

matchNr=6代表总共匹配到6个。matchNr可以作为一个变量名称直接用。

2.get请求参数的类型没有json格式

没写消息头,运行成功,是因为get请求参数的类型没有json格式,约定俗成的不用这种方式。

url后面是parameterjson本身传也是字符串,但是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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
    • 一、响应的提取--json提取器(下)
      • 1.有多个的话,怎么获取某一个呢?
      • 2.get请求参数的类型没有json格式
      • 3.json中的key-value键值对顺序是无序的
      • 4.重点:一个json提取器写多个提取式。
    • 二、性能测试中,关联的时候会用得上:响应的提取。
      • 三、正则提取器
        • 1.万能正则式:.*?
        • 2.写正则提取式
        • 3.配置正则表达式提取器并运行。
        • 4.Jmeter正则表达式
        • 脚本链接:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档