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

目录

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

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

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

    • 3.json中的key-value键值对顺序是无序的

    • 4.重点:一个json提取器写多个提取式

  • 二、性能测试中,关联的时候会用得上:响应的提取

  • 三、正则提取器

    • 1.万能正则式:.*?

    • 2.写正则提取式

    • 3.配置正则表达式提取器并运行

    • 4.Jmeter正则表达式

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

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

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

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

85e1f02002506f737f09120d8ae9f8a7.png

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

b20621efc77d7d0767a7c86b4e327cd8.png
填写-1
590672085f734ec53eb5972f823c553a.png
运行结果

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

93fb408c1670cb217eca1198c96e7404.png 129741d2814858959f0bfd2db2568697.png
运行结果

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

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

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

url后面是parameterjson本身传也是字符串,但是url后携带参数有长度限制,超了就传不了了,一般不用。)

1cae79a80080a9da823a9afaf662ff1f.png c8bb4fb4aa1dc19af4dfaf0d4642bc6f.png 572d0e1f0fe8efd5ad59a08f8132fa7c.png
运行结果

3.json中的key-value键值对顺序是无序的

如果设置的是2,只想取第二个位置的值。返回的结果值是田园时蔬。但是能保证每次返回的都是田园时蔬吗?

f4c213f9f7b070e53a6fa83e2e185bfd.png 3e20682c7eab4894eed8f025cbd79c47.png
运行结果

不能。因为json中的key-value键值对顺序是无序的。

35f3c62de51ec151528349dc0a68e335.png
有可能这个大括号里面的整个内容在前面,那个大括号里面的整个内容在后面

比如这个大括号里面的内容:"id":1,"typeId":1,"typeDesc":"早晨快餐"id、typeId、typeDesc这三个的顺序也是无序的。

但是肯定的是"id":1,"typeId":1,"typeDesc":"早晨快餐"这三个key和value的值是一一对应的

4.重点:一个json提取器写多个提取式。

$..

再写一个json提取器。从性能的角度来说,多一个元件会多消耗一些资源。

一个json提取器写多个提取式。

1)用英文的分号;

例如$..typeDesc;$..typeId

7f64f50ec980526ef48dc6cf93f267c1.png
没填写Default Values,运行后就报错了

在一个json提取器中,要提取出多个值的时候,一定要填写Default Values,否则会报错,报错提示:数组越界了。

填写了Default Values,当提取不到结果的时候,就会返回默认值。

自己定义个Default Values值,这个是随便定义的默认值,例如 td;tid

358e22c26db61fa4ee568aa076ae1721.png
配置json提取器
5b87efba590cd7799e3a91d3c401c466.png
运行结果
2)多个之间用逗号会报错

多个之间是用的英文分号,用英文逗号不行。

1315afb6f01926d6a30d8d3698f08eca.png
运行后报错
16213e676fe004aecfe4a9f06a62af92.png
运行后报错
6a4d5f281cc89a22c44260567774a5be.png
要提取几个值,这些地方就要对应的填写。
c6c303fc313fdf6d095f186416419fdc.png
运行结果

二、性能测试中,关联的时候会用得上:响应的提取。

比如,在注册接口提取出来了jqid

23df3fca578102c9edcabe6dff8b1b93.png

登录的接口用到从注册接口提取出来的值:jqid,作为传入参数:

7d342e94caa8288a1b1fef64f4a31d01.png

三、正则提取器

session不会在响应信息里面,所以就不能用json提取器,用正则提取器。

正则提取式: 左边界(正则式)右边界

1.万能正则式:.*?

万能正则式,能万能到什么程度呢?

换行符(\n) 之外的,都可以匹配。

万能正则式把不想要的东西也匹配出来了,也就是说不精确

2.写正则提取式

添加后置处理器--->正则表达式提取器。在察看结果树中选择RegExp Tester,然后写正则提取式:

mobile":"(.*?)",点击Test。

cf2bbeb31f6b34959cb85c6307e618a3.png

找左边界的时候要找能看的出来的特征,例如:mobile":"

只要是在它右边的,都算是右边界。但是只取最小右边界:

因为json中的key-value键值对顺序是无序的。

万一这个mobile的顺序显示在了最后面的这个位置,最后的这个位置,后面除了,没有逗号了。

f4bc9e3cee9434864bf44d139da077e6.png
是一个列表里面再嵌套了一个列表,无需关注这个。

3.配置正则表达式提取器并运行。

模板的固定写法:$数字$

f0bed169c2d2e8ca194864fdebb74c2f.png
正则表达式提取器

从数字1开始,数字1代表取第一个(),数字2代表取第二个()。

因为只有一个(),所以取第一个()。

214909833da444fbf56d51977b352ddc.png
运行结果

4.Jmeter正则表达式

常用正则式:
  • 左右边界值,中间匹配内容用()代表用户括号内正则式匹配。

  • .匹配除换行符以外的所有字符。

  • *匹配0次或多次。

  • +匹配1次或多次。

  • ?匹配0次或1次。

  • .* .+

  • ld ld+ [0-9]+

  • lwlw+ 英文字母或数字的字符串。

46c57d0011a0c1e5f71d747e9d0555a2.png
重点关注我圈出来的部分
b4e0bbb6656462feb8ef591606607dd4.png
重点关注我圈出来的部分

先用万能正则式,不行的话再改改。

脚本链接:

链接:https://pan.baidu.com/s/18-nY9hcjuqT4AIBLkRkPQg?pwd=1234 提取码:1234


文章中除标明“图片来自网络”的图片,皆为小编本人所画所截图,计算机知识都一样,如有雷同,纯属巧合。

欢迎关注 “清菡软件测试”,进群加v:qhtester,备注:学校(公司名)+姓名(昵称),否则不予通过,感谢点赞与分享!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清菡软件测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值