jmeter 的使用做个练习: 1.发送接口 主题首页, 建议去掉 page tab 和limit 查询结果通过json提取器,拿第二个主题的id 2.拿到这个id 之后书写变量名 在主题详情中使用
时间: 2024-02-21 16:58:04 浏览: 85
jmeter使用正则表达式提取器实现接口关联
好的,这是一个使用 JMeter 进行接口测试的练习。
1. 首先创建一个 HTTP 请求,请求 URL 为主题首页接口,去除 page、tab 和 limit 参数,如下所示:
- HTTP 请求默认值
- 服务器名称或 IP:输入主题首页接口的地址
- 方法:选择 GET
- 路径:输入主题首页接口的路径,不包括参数
- 参数:不填或去掉 page、tab 和 limit 参数
2. 添加一个 JSON 提取器,用于提取第二个主题的 id。配置如下:
- JSON 提取器
- 变量名:输入一个变量名,用于保存提取的 id,比如 ${topic_id}
- JSON 路径表达式:输入一个 JSON 路径表达式,用于定位需要提取的 id。假设返回的 JSON 数据格式为:
```
{
"code": 0,
"data": {
"topics": [
{
"id": 1,
"title": "主题1"
},
{
"id": 2,
"title": "主题2"
},
...
]
}
}
```
那么 JSON 路径表达式可以写成 $.data.topics[1].id,表示取出 topics 数组中第二个元素的 id 值。
3. 添加一个正则表达式提取器,用于从 HTTP 响应中提取出 csrf token。配置如下:
- 正则表达式提取器
- 变量名:输入一个变量名,用于保存提取的 csrf token,比如 ${csrf_token}
- 正则表达式:输入一个正则表达式,用于匹配出 csrf token。假设 csrf token 在响应中的格式为:<meta name="_csrf" content="xxxx">,那么正则表达式可以写成:<meta name="_csrf" content="(.+?)">
4. 添加一个 BeanShell 前置处理器,用于设置 HTTP 请求中的参数。具体操作如下:
- 创建一个 BeanShell 前置处理器
- 输入如下代码:
```
import org.apache.jmeter.protocol.http.util.HTTPArgument;
import org.apache.jmeter.config.Argument;
Argument arg = new HTTPArgument("csrf_token", vars.get("csrf_token"), false);
sampler.getArguments().addArgument(arg);
```
这段代码的作用是创建一个名为 csrf_token 的参数,值为之前提取的 csrf token,然后将该参数添加到 HTTP 请求中。
5. 添加一个 HTTP 请求,请求 URL 是主题详情接口,路径中使用之前提取的主题 id,如下所示:
- HTTP 请求默认值
- 服务器名称或 IP:输入主题详情接口的地址
- 方法:选择 GET
- 路径:输入主题详情接口的路径,包括之前提取的主题 id,比如 /topic/${topic_id}
- 参数:不填或根据需要添加其他参数
6. 运行测试计划,JMeter 会依次发送两个 HTTP 请求,提取第二个主题的 id,然后发送主题详情接口请求,路径中包含之前提取的主题 id。
阅读全文