jmeter中使用for each控制器将用json提取器提取的班级id进行遍历,在post中发送消息体:班级id,班级人数,消息体需要取与班级id对应的班级人数,怎么取
时间: 2024-03-12 12:44:28 浏览: 41
jmeter json获取数据
可以按照以下步骤在 JMeter 中使用 For Each 控制器遍历 JSON 提取器提取的班级 ID,在 POST 请求中发送消息体:班级 ID,班级人数,消息体需要取与班级 ID 对应的班级人数:
1. 在测试计划中添加一个 HTTP 请求,请求方法选择 POST,请求 URL 设置为发送消息的接口地址。
2. 在 HTTP 请求中添加一个 JSON 提取器,使用 JSONPath 表达式提取班级 ID 并保存到变量中,例如:`$.classId`,变量名设置为 `classId`。
3. 在 HTTP 请求中添加一个 For Each 控制器,将班级 ID 的变量名设置为变量名,例如:`${classId}`。
4. 在 For Each 控制器中添加一个 HTTP 请求,将班级人数和消息体需要取的数量设置为变量值,例如:
- 班级人数的参数名为:`${studentsNum}`
- 消息体需要取的数量为:`${__Random(1,${studentsNum})}`
`${__Random(1,${studentsNum})}` 表示从 1 到 `${studentsNum}` 随机取一个整数作为消息体需要取的数量。
5. 在 HTTP 请求中设置请求体,例如:
```
{
"classId": ${classId},
"studentsNum": ${studentsNum},
"message": "${__RandomString(${__Random(5,50)})}"
}
```
`${__RandomString(${__Random(5,50)})}` 表示生成一个随机长度在 5 到 50 之间的字符串作为消息体。
6. 运行测试计划,JMeter 会自动读取 JSON 提取器中提取的班级 ID,依次替换到 HTTP 请求中的变量 `${classId}` 中,并发送 POST 请求。在每个请求中,For Each 控制器会根据班级 ID 找到对应的班级人数,将其替换到 HTTP 请求中的变量 `${studentsNum}` 中,并随机生成一个消息体发送。
注意事项:
1. JSON 提取器中的 JSONPath 表达式必须能够准确提取班级 ID。
2. For Each 控制器中的循环次数应该与 JSON 提取器中提取的班级 ID 数量相等。
3. 如需发送多个请求,可在 For Each 控制器中添加多个 HTTP 请求,JMeter 会依次发送每个请求。
阅读全文