JMeter正则表达式提取器和JSON提取器基础用法,小白必会!

最近在利用JMeter做接口自动化测试,正则表达式提取器和JSON提取器用的还挺多,想着分享下,希望对大家的接口自动化测试项目有所启发。

在 JMeter 中,正则表达式和 JSON 提取器都是用于从响应数据中提取所需内容,但它们的使用场景略有不同。正则表达式提取器适用于处理非结构化或不规则格式的响应数据,而 JSON 提取器适用于处理结构化的 JSON 响应数据。 

正则表达式提取器:正则表达式提取器是 JMeter 的内置功能,用于从响应数据中提取特定模式的文本。它适用于那些响应数据中的内容没有明确定义结构的情况。

例如,当响应数据是自由格式的文本、HTML、XML 或其他非结构化数据时,可以使用正则表达式提取器来捕获信息,需要编写适当的正则表达式来匹配并捕获所需的内容。 

JSON 提取器:JSON 提取器是 JMeter 的插件,专门用于从 JSON 格式的响应数据中提取数据。它针对 JSON 数据结构进行了优化,并提供了更便捷的方式来解析和提取 JSON 数据。

可以使用 JSON 提取器根据 JSON 路径表达式来定位和提取 JSON 对象、数组或属性中的值。JSON 提取器更适用于处理结构化的响应数据,如 API 响应返回的 JSON 格式数据。

一、使用场景

A接口返回的JSON数据如下,B接口需要用到A接口的返回参数id_card_num,所以需要将A接口返回的参数提取出来,存在一个变量例如card_num_test中,在B接口中直接以${card_num_test}的形式调用即可。

图片

二、  正则表达式提取器

1、新建http请求

图片

2、添加正则表达式提取器

选中http请求,鼠标右键--添加--后置处理器--正则表达式提取器

图片

3、填写正则表达式的参数

图片

名称:自定义

Apply to :

  • Main sample and sub-samples:匹配范围包括当前父取样器并覆盖子取样器

  • Main sample only:默认,匹配范围是当前父取样器(大多数情况下选择默认即可)

  • Sub-samples only :仅匹配子取样器

  • JMeter Variable Name to use:支持对 JMeter变量值进行匹配(输入框内可输入jmeter的变量名称)

要检查的响应字段:

  • 主体:响应数据的主体部分

  • Body(unescaped):针对替换了的响应码部分

  • Body as a Document:返回内容作为一个文档进行匹配

  • 信息头

  • Request Headers:请求头部分

  • URL:URL链接

  • 响应代码:响应码,例如HTTP返回码200表示成功

  • 响应信息:响应信息,例如处理成功返回“成功”字样,或者“OK”字样

引用名称:下一个请求要引用的参数名称,如填写card_num_test,则可用$card_num_test}引用它。

正则表达式:编写一个正则表达式来匹配要提取的内容,例如"id_card_num":"(.+?)"

():括起来的部分就是要提取的。

.:匹配任何字符串。

+:一次或多次。

?:不要太贪婪,在找到第一个匹配项后停止。

模板:指定如何处理匹配结果,例如$-1$表示取所有值,$0$表示随机取值,$1$表示取第一个值,$2$表示取第二个值

匹配数字:1代表全部取值,0表示随机取值

缺省值:如果正则表达式取不到值,则使用此缺省值

4、添加一个Debug Sampler

可以用来调试,验证正则表达式是否正确。

图片

图片

5、执行脚本,查看结果

与接口返回的值一致,证明正则表达式编写正确,B接口需要用到这个值的时候,直接以${card_num_test}的形式调用。

图片

三、JSON提取器

1、新建http请求

图片

2、添加正则表达式提取器

选中http请求,鼠标右键--添加--后置处理器--JSON Extractor

图片

3、填写JSON提取器的参数

图片

名称:自定义

Apply to :应用范围,一般默认为Main sample only,可根据实际使用需求选择

Main sample and sub-samples:作用于主请求和子请求

Main sample only:仅作用于主请求

Sub-samples only:仅作用于子请求

JMeter Variable:作用于JMeter变量(输入框内可输入JMeter的变量名称);用法可用于提取正则表达式提取器中的值

Names of Created variables:作为引用的变量名称,多个变量名通过分号;隔开,自定义

JSON Path expessions:格式为 $.(层级名称),本次示例为$.data.id_card_num

Match No.:取第几个数值,0代表随机,-1代表取全部数组数据,1代表取一个变量数值,与设置的变量名称有关,本次示例填-1(说明:如果填写1,后面引用变量的时候直接用${card_num_test}即可,如果填写-1,返回的是一个数组,后面引用变量的时候要用${card_num_test_1},${card_num_test_2}的形式)

Compute concatenation var(suffix_ALL):匹配到的所有数值并保存,默认为空即可

Default Value:取值失败时展示的内容,默认为空即可

4、添加一个Debug Sampler

可以用来调试,验证正则表达式是否正确。

图片

图片

5、执行脚本,查看结果

与接口返回的值一致,证明正则表达式编写正确,B接口需要用到这个值的时候,直接以${card_num_test_1}的形式调用。

图片

今天的分享就到这里~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值