浅谈后置处理器之JSON提取器
JMeter 的 JSON 提取器(JSON Extractor)是一个强大的后置处理器,它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据,并将这些数据存储为变量,以便在后续的请求中重用。这对于需要动态处理基于JSON格式API测试的场景尤为有用。以下是对JSON提取器的详细说明和使用教程。
使用场景
● 参数化请求:从一个API响应中提取token或其他标识符,用于后续请求的认证或数据关联。
● 数据驱动测试:提取JSON数组中的多个值,用于遍历测试不同的数据集。
● 验证响应内容:检查特定的JSON字段是否存在或其值是否符合预期。
配置步骤
添加JSON提取器
- 在你的JMeter测试计划中,选择一个采样器(如HTTP请求)。
- 右键点击该采样器,选择“添加” > “后置处理器” > “JSON 提取器”。
配置参数
JSON 提取器提供了多个配置选项,以下是关键参数的解释:
● 名称: 给这个后置处理器一个描述性的名称,便于识别。
● Names of created variables:变量名称
● JSON Path expressions: 输入JSON路径表达式,用于定位你想要提取的数据。例如$.username会提取根对象下的username字段。
● Match No. (0 for Random):
○ 0: 随机选择一个匹配项。
○ n: 提取第n个匹配项(n为正整数)。
○ -1: 提取所有匹配项,并以变量数组形式存储。
● Compute concatenation var(suffix_ALL):匹配到的所有数值并保存,默认为空即可
● Default Values: 如果没有找到匹配的JSON路径,可以设置一个默认值。
变量命名与引用
● 变量名: 为提取的数据指定一个变量名。如果Match No.设置为-1,则应使用数组形式的变量名,如users_,这样每个匹配项将会被命名为users_1、users_2等。
示例
假设你有一个API响应如下:
{
"status": "success",
"data": {
"userId": 12345,
"username": "exampleUser"
}
}
要提取username值,你可以配置JSON Extractor如下:
● JSON Path expressions: $.data.username
● Names of created variables: userNameVar
● Match No.: 1
之后,在JMeter中任何地方可以通过${userNameVar}引用提取到的用户名。
应用实例
首先我们使用SpingBoot编写部分测试接口代码
@PostMapping(value = "/login",produces = "application/json;charset=UTF-8")
public String authenticate