以下是详细讲解JMeter使用JSON提取请求数据的方法的完整攻略。
什么是JSON Extractor?
JSON Extractor是JMeter插件之一,其主要功能是从HTTP响应中的JSON数据中提取出所需数据。
JSON Extractor配置
JSON Extractor是基于JMeter的post-processor,它可以获取JSON数据并在后续操作中使用。以下是如何配置JSON Extractor:
- 添加JSON Extractor
选中需要使用JSON提取的HTTP响应的请求,然后单击右键选择“添加 > 后置处理器 > JSON Extractor”。
- 配置JSON Extractor
打开JSON Extractor后,在名称字段中为该提取器命名。下面我们来详细配置JSON Extractor。
- 主机名或IP地址:输入要提取的JSON字符串所在的 JSON根对象的名称或路径。根据响应的JSON结构来指定,如果JSON数据是对象,则可以直接输入对象名称;如果是数组,则需要使用数组语法。例如,如果需要从“data”对象中提取数据,则应输入“$.data”。
- 变量名:输入提取的变量名。请确保该变量名称唯一,以便在后续的步骤中使用它。例如,如果要提取的数据位于“user_id”字段中,则可以输入“user_id”。
- JSON Path表达式:输入提取数据的JSON Path表达式。JSON Path是一种基于JSON文档结构的查询语言,可用于从JSON结构中验证、查询或提取信息。如果您不知道JSON Path表达式的语法和用法,则可以在此处输入“$”,它将返回JSON的整个根对象。例如,如果要提取的 JSON 格式如下:
{
"user_id":"1234",
"user_name":"John",
"email":"john@example.com"
}
要提取user_id可以输入“$.user_id”。
- 默认值:如果找不到要提取的值,则可以输入默认值。
其他需要配置的选项有:
- 是否应只匹配第一个匹配项
- 是否对提取值解码
- 是否适用递归搜索
示例1:提取json数组中的值
以下是JMeter使用JSON Extractor提取JSON数组的示例:
- 定义HTTP请求
首先,我们需要定义一个HTTP请求。在这个例子中,我们将假设我们正在测试一个 web 服务,该服务返回以下 JSON 响应:
[
{
"name": "John Doe",
"age": 35
},
{
"name": "Jane Smith",
"age": 28
}
]
- 添加JSON Extractor
在HTTP请求下添加一个JSON Extractor。
- 配置JSON Extractor
在JSON Extractor中定义表达式:$[*].name。这个表达式表示取得JSON响应中name字段的所有值。
- 添加Debug Sampler
在JMeter Tree中选择添加一个Debug Sampler。这样我们就可以看到从JSON响应中提取的数据。
- 执行测试
运行测试并查看Debug Sampelr的响应数据。您应该看到:
name_1=John Doe
name_2=Jane Smith
示例2:从嵌套json结构中提取值
以下是JMeter使用JSON Extractor从嵌套json结构中提取值的示例:
- 定义HTTP请求
首先,我们需要定义一个HTTP请求。在这个例子中,我们将假设我们正在测试一个web服务,该服务返回以下 JSON 响应:
{
"data": {
"user": {
"name": "John Doe",
"age": 35
},
"location": {
"city": "New York",
"state": "NY"
}
}
}
- 添加JSON Extractor
在HTTP请求下添加一个JSON Extractor。
- 配置JSON Extractor
在JSON Extractor中定义表达式:$.data.user.age。这个表达式表示取得JSON响应中data对象里user对象中age字段的值。
- 添加Debug Sampler
在JMeter Tree中选择添加一个Debug Sampler。这样我们就可以看到从JSON响应中提取的数据。
- 执行测试
运行测试并查看Debug Sampelr的响应数据。您应该看到:
age=35
这就是使用JSON Extractor从JSON响应中提取数据的两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jmeter 使用Json提取请求数据的方法 - Python技术站