在接口测试中,经常遇到接口之间存在依赖关系:例如登录后返回 token,后续的查询、修改接口需要携带该 token。这种"从上一个响应中提取数据,传递给下一个请求"的过程就是关联。本文将系统讲解 JMeter 中几种常用的提取器:正则表达式提取器、JSON 提取器、边界提取器,并通过实战演示如何实现 token 的自动传递。
一、关联的本质
关联的步骤分为:
发起请求,获得响应
从响应中通过某种规则提取所需的值
将提取的值存入变量
后续请求中使用 ${变量名} 引用
典型场景:
登录获取 token / sessionId
查询列表后,提取第一条数据的 ID 用于修改或删除
从响应中获取 CSRF token 用于表单提交
二、三种常用的提取器

三、JSON 提取器(最推荐)
3.1 添加位置
右键某个 HTTP 请求(作为"源请求") → Add → Post Processors → JSON Extractor
3.2 配置项说明

3.3 实战:提取登录返回的 token
假设登录接口响应:
json
{
"code": 0,
"message": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
"userId": 1001
}
}
JSON 提取器配置:
变量名:token
JSON Path:$.data.token
默认值:null
后续请求(如查询用户信息)中,在 HTTP Header Manager 中添加:
名称:Authorization
值:Bearer ${token}
3.4 提取多个值的场景
如果要同时提取 token 和 userId,可以配置多个变量名和对应的 JSON Path:
Names:token,userId
JSON Paths:.data.token,.data.token,.data.token,.data.userId
四、正则表达式提取器
当响应不是 JSON(如 XML、HTML、纯文本)时,正则表达式是非常强大的工具。
4.1 添加位置
右键 HTTP 请求 → Add → Post Processors → Regular Expression Extractor
4.2 配置项说明

4.3 常见正则示例
提取 JSON 中的 token:"token":"(.*?)" (非贪婪匹配)
提取 HTML 中的 input value:
提取 XML 标签内容:(.*?)
4.4 实战:提取 HTML 响应中的隐藏字段
假设登录页面返回一个 HTML,包含 CSRF token:
html
正则表达式提取器配置:
变量名:csrf
正则:<input type="hidden" name="csrf_token" value="([^"]+)"
模板:111
后续请求中,使用 ${csrf} 作为请求参数。
五、边界提取器(Boundary Extractor)
边界提取器是 JMeter 5.0 引入的,比正则表达式更简单直观,适合提取左右边界明确的内容。
5.1 添加位置
右键 HTTP 请求 → Add → Post Processors → Boundary Extractor
5.2 配置项

5.3 示例
响应片段:"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
左边界:"token":"
右边界:"
提取结果:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
边界提取器的优势是不需要写正则,性能更好,可读性更强。
六、提取器的调试与验证
6.1 使用 Debug Sampler
右键线程组 → Add → Sampler → Debug Sampler
运行后,在查看结果树中可以找到 Debug Sampler 的输出,显示所有 JMeter 变量及其值(包括提取器生成的变量),便于调试。
6.2 在查看结果树中查看提取结果
在 HTTP 请求的"请求"标签页,可以看到最终发送的请求中变量是否被正确替换。
七、实战:完整的业务流程关联
场景:用户登录 → 获取 token → 查询个人信息 → 修改个人信息
7.1 测试计划结构
text
Thread Group
├─ HTTP Request - Login (POST /api/login)
│ ├─ JSON Extractor (提取 token, userId)
│ └─ Response Assertion (校验登录成功)
├─ HTTP Header Manager (添加 Authorization: Bearer token)├─HTTPRequest−GetProfile(GET/api/user/{token}) ├─ HTTP Request - Get Profile (GET /api/user/token)├─HTTPRequest−GetProfile(GET/api/user/{userId})
│ └─ JSON Assertion (校验用户名等)
├─ HTTP Request - Update Profile (PUT /api/user/${userId})
│ └─ JSON Assertion
└─ View Results Tree
7.2 具体步骤
登录请求:发送用户名密码,Body 为 JSON。
JSON 提取器:提取 data.token 和 data.userId。
HTTP Header Manager(可放在登录请求之后,线程组级别):设置 Authorization: Bearer ${token}。
获取个人信息:路径使用 /api/user/${userId},Token 自动携带。
修改个人信息:同样使用 token 和 userId。
7.3 注意事项
由于提取器只作用于它所在的取样器,后续请求必须在线程组内(同一个线程)才能使用提取的变量。
确保登录请求成功后再执行后续请求,可以通过断言控制,或使用"仅一次控制器"之类的逻辑,但最简单的是让它们顺序执行。
八、常见错误与解决

九、总结
本文核心:
关联是解决接口依赖的核心技术
JSON 提取器最常用,用于 REST API
正则表达式提取器通用,适合任何文本
边界提取器简洁,适合左右边界明确的场景
Debug Sampler 是调试提取器的好帮手