jmeter通过json提取器获取接口返回token(超详细)

一、接口添加后置处理器——JSON提取器

二、登录接口添加监听器——查看结果树

三、运行登录接口,查看结果数返回的json,是否有token值

四、填写JSON提取器的数据

1、Name of created variables:提取的变量名称,用于存储提取到的值

2、JSON Path Expressions:用于提取 JSON 数据的路径表达式

3、Match Numbers:指定提取第几个匹配的值,当 JSONPath 表达式匹配到多个值时,选择提取哪个值。

  • 0:提取所有匹配的值(返回数组)。(默认值)

  • 1:提取第一个匹配的值。

  • 2:提取第二个匹配的值,以此类推。

4、Default Value:当提取失败时返回的默认值。

五、通过查看结果数检查“JSON Path Expressions”是否提取正确:

六、下一个接口需要 传入登录获取的token

添加一个HTTP信息头管理,传入获取的token, ${变量名称}

七、示例

假设服务器返回以下 JSON 响应:获取id

{
  "data": {
    "id": 12345,
    "name": "John Doe",
    "roles": ["admin", "user"]
  },
  "status": "success"
}

配置 JSON 提取器:

  • 名称(Name of created variables):userId
  • JSON Path Expressions:$.data.id
  • Match Numbers:1
  • Default Value:NOT_FOUND

提取结果:

  • 提取到的变量:userId
  • 变量值:12345

——————————————————————————————————————————

常见 JSONPath 表达式示例

  1. 提取单个字段

    • JSONPath:$.data.name

    • 结果:"John Doe"

  2. 提取数组中的所有值

    • JSONPath:$.data.roles[*]

    • 结果:["admin", "user"]

  3. 提取数组中的第一个值

    • JSONPath:$.data.roles[0]

    • 结果:"admin"

  4. 提取不存在的字段

    • JSONPath:$.data.age

    • 结果:返回默认值(如 NOT_FOUND)。

### JMeter 后置处理器的通用性及使用场景 JMeter 的后置处理器(Post-Processors)主要用于在发送请求后对响应数据进行处理。它可以提取数据、验证响应内容、设置变量等,具有较高的灵活性和通用性[^1]。以下从通用性和不同场景下的使用方法展开说明。 #### 1. **后置处理器的通用性** 后置处理器的设计使其能够适用于多种测试需求,无论是接口测试还是性能测试,都可以通过后置处理器实现复杂的逻辑处理。例如: - 使用正则表达式提取器(Regular Expression Extractor)从响应中提取特定值[^1]。 - 使用 JSON 提取器JSON Extractor)解析 JSON 格式的响应并提取字段[^2]。 - 使用 XPath 提取器(XPath Extractor)处理 XML 响应[^3]。 后置处理器的通用性体现在其支持多种数据格式(如文本、JSON、XML 等)以及灵活的脚本编写能力(如 BeanShell 和 Groovy 脚本)。这种设计使得后置处理器可以适应不同的测试需求和场景。 #### 2. **后置处理器的使用场景** 以下是后置处理器在不同场景下的具体应用示例: ##### 场景一:提取 Cookie 值 在接口测试中,如果需要获取服务器返回的 Cookie 并在后续请求中使用,可以通过 HTTP Cookie 管理器结合后置处理器实现[^4]。例如,使用正则表达式提取器从 Set-Cookie 响应头中提取 Cookie 值,并将其存储为变量供后续请求使用。 代码示例: ```properties Set-Cookie: JSESSIONID=123456789; Path=/; HttpOnly ``` 配置正则表达式提取器: - 名称:`JSESSIONID` - 正则表达式:`JSESSIONID=(.*?);` - 模板:`$1$` ##### 场景二:处理 JSON 响应 对于返回 JSON 数据的接口,可以使用 JSON 提取器提取所需的字段值。例如,假设接口返回如下 JSON 数据: ```json { "id": 123, "name": "example", "token": "abcdef123456" } ``` 可以配置 JSON 提取器提取 `token` 字段,并将其存储为变量以供后续请求使用。 配置 JSON 提取器: - 变量名称:`token` - JSON 路径表达式:`$.token` ##### 场景三:处理复杂逻辑 对于复杂的业务逻辑,可以使用 BeanShell 或 Groovy 脚本编写自定义后置处理器。例如,假设需要根据响应内容动态生成下一个请求的参数,可以通过脚本实现。 Groovy 脚本示例: ```groovy def response = prev.getResponseDataAsString() if (response.contains("success")) { vars.put("status", "OK") } else { vars.put("status", "ERROR") } ``` ##### 场景四:校验响应内容 后置处理器还可以用于校验响应内容是否符合预期。例如,使用断言(Assertions)或脚本检查响应中的关键字段是否正确[^5]。 示例代码(BeanShell 脚本): ```java String response = prev.getResponseDataAsString(); if (!response.contains("expectedValue")) { throw new Exception("Response does not contain expected value"); } ``` #### 3. **后置处理器的注意事项** - 确保后置处理器与对应的请求关联,否则可能无法正确执行。 - 对于复杂逻辑,优先使用 Groovy 脚本,因其性能优于 BeanShell[^3]。 - 在大规模性能测试中,避免使用过多的后置处理器,以免增加测试负担[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值