jmeter正则表达式提取多个值

jmeter正则表达式提取多个值

在使用JMeter进行性能测试时,有时候需要从响应结果中提取出多个值进行后续的处理,比如进行断言或者断言结果比较、赋值给变量进行使用等等。在JMeter中,可以使用正则表达式来提取多个值。本文将介绍如何在JMeter中使用正则表达式提取多个值。

需要的工具

在使用JMeter提取多个值之前,需要先安装插件RegexExtractor和JSON Extractor。这两个插件都是JMeter自带的插件,如果你已经安装了JMeter,那么这两个插件就会自动安装。

正则表达式提取多个值

下面是一个示例请求的响应结果:

{
    "id": 123,
    "name": "Tom",
    "gender": "male",
    "age": 25
}

我们需要从上面的响应结果中提取出id、name和age这三个值。此时,可以使用JSON Extractor来提取出这三个值。

首先,在请求中添加JSON Extractor。点击HTTP请求中的“添加”按钮,在出现的下拉菜单中选择“Post Processor” -> “JSON Extractor”。

接着,在JSON Extractor中添加如下配置:

  • 名称(Name):任意取一个名字,比如“extractor”
  • JSON路径表达式(JSON Path expressions):分别输入“.id”、“.name”、“$.age”
  • 默认值(Default Values):为空
  • 处理空值(Handle Empty Value):勾选“否”

最终的JSON Extractor配置如下所示:

JSON Extractor
名称:extractor
JSON路径表达式:
    - .id
    -.name
    - $.age
默认值:空
处理空值:否

如上配置完成以后,点击保存按钮即可。

接着,我们需要使用正则表达式提取出这三个值。正则表达式的语法比较复杂,在此不再赘述。下面是提取正则表达式的示例代码:

"id\":\s*(\d+),\"name\":\s*\"(\w+)\",\"age\":\s*(\d+)

以上正则表达式可以提取出响应结果中的id、name和age。

接下来,我们需要在HTTP请求中添加正则表达式提取器(Regular Expression Extractor)。点击HTTP请求中的“添加”按钮,在出现的下拉菜单中选择“Post Processor” -> “Regular Expression Extractor”。

在正则表达式提取器中添加如下配置:

  • 名称(Name):任意取一个名字,比如“regex”
  • 正则表达式(Regular Expression):使用上面提取正则表达式的代码
  • 模板(Template):1,2,3
  • 匹配号(Match No.):-1
  • 默认值(Default Values):为空

最终的正则表达式提取器配置如下所示:

正则表达式提取器
名称:regex
正则表达式:\"id\":\s*(\d+),\"name\":\s*\"(\w+)\",\"age\":\s*(\d+)
模板:1,2,3
匹配号:-1
默认值:空

如上配置完成以后,点击保存按钮即可。

最后,我们需要在断言或者其他地方使用提取出来的值,可以使用JMeter内置变量函数${}来获取提取出来的值。比如,在检查点中可以使用:

  • ${extractor_1} 提取出的第一个值
  • ${extractor_2} 提取出的第二个值
  • ${extractor_3} 提取出的第三个值

结论

使用JMeter提取多个值有两种方式,一种是使用JSON Extractor,另一种是使用正则表达式提取器。JSON Extractor适用于从JSON格式的响应结果中提取多个值,而正则表达式提取器适用于提取任意格式的响应结果中的多个值。在使用之前需要先安装对应的插件,配置完成后可以使用JMeter内置变量函数${}来获取提取出来的值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程