jmeter中使用for each控制器将用json提取器提取的多个班级id进行遍历,在post中发送消息体:班级id,和与班级id对应的班级人数,怎么取
时间: 2024-03-12 16:44:34 浏览: 107
你可以按照以下步骤来实现:
1. 在 jmeter 中添加一个 ForEach 控制器,并将需要遍历的班级 id 放入其中。
2. 在 ForEach 控制器中添加一个 HTTP 请求,并将需要传递的参数放入消息体中,例如:
```
{
"classId": "${classId}",
"classSize": "${__V(classSize_${classId})}"
}
```
这样,每次遍历时,都会将当前的班级 id 和对应的班级人数放入消息体中。
3. 在 HTTP 请求中添加一个 JSON 提取器,用于提取每个班级 id 对应的班级人数。
```
变量名:classSize_${classId}
JSON 表达式:$.classSize
```
这样,每次请求时,都会从返回的 JSON 数据中提取当前班级 id 对应的班级人数,并将其存储到变量中。
4. 在 ForEach 控制器的计数器中,将变量名设置为 classSize_${classId},以便在每次遍历时,都能够获取到当前班级 id 对应的班级人数。
```
变量名:classSize_${classId}
起始值:0
步长:1
```
这样,每次遍历时,都会将当前班级 id 对应的班级人数作为请求参数传递到服务器端。
相关问题
jmeter中使用for each控制器将用json提取器提取的班级id进行遍历,在post中发送消息体:班级id,和与班级id对应的班级人数,怎么取
可以按照以下步骤在 JMeter 中使用 For Each 控制器遍历 JSON 提取器提取的班级 ID,在 POST 请求中发送消息体:班级 ID 和与班级 ID 对应的班级人数:
1. 在测试计划中添加一个 HTTP 请求,请求方法选择 POST,请求 URL 设置为发送消息的接口地址。
2. 在 HTTP 请求中添加一个 JSON 提取器,使用 JSONPath 表达式提取班级 ID 和班级人数并保存到变量中,例如:
- 班级 ID 的 JSONPath 表达式为:`$.classId`,变量名设置为 `classId`。
- 班级人数的 JSONPath 表达式为:`$.studentsNum`,变量名设置为 `studentsNum`。
3. 在 HTTP 请求中添加一个 For Each 控制器,将班级 ID 的变量名设置为变量名,例如:`${classId}`。
4. 在 For Each 控制器中添加一个 HTTP 请求,将班级人数设置为变量值,例如:`${studentsNum}`。
5. 在 HTTP 请求中设置请求体,例如:
```
{
"classId": ${classId},
"studentsNum": ${studentsNum},
"message": "${__RandomString(${__Random(5,50)})}"
}
```
`${__RandomString(${__Random(5,50)})}` 表示生成一个随机长度在 5 到 50 之间的字符串作为消息体。
6. 运行测试计划,JMeter 会自动读取 JSON 提取器中提取的班级 ID 和班级人数,依次替换到 HTTP 请求中的变量 `${classId}` 和 `${studentsNum}` 中,并发送 POST 请求。在每个请求中,For Each 控制器会根据班级 ID 找到对应的班级人数,将其替换到 HTTP 请求中的变量 `${studentsNum}` 中,并随机生成一个消息体发送。
注意事项:
1. JSON 提取器中的 JSONPath 表达式必须能够准确提取班级 ID 和班级人数。
2. For Each 控制器中的循环次数应该与 JSON 提取器中提取的班级 ID 数量相等。
3. 如需发送多个请求,可在 For Each 控制器中添加多个 HTTP 请求,JMeter 会依次发送每个请求。
jmeter中使用for each控制器将用json提取器提取的班级id进行遍历,在post中发送消息体:班级id,班级人数,消息体需要取与班级id对应的班级人数,怎么取
可以按照以下步骤在 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 会依次发送每个请求。
阅读全文