(九)通过逻辑处理器串联请求/遍历list结果/foreach控制器

需求:有一个用户列表接口和一个用户详情接口,现需要根据用户列表接口遍历每一个用户的详情

  • 接口
/**
 * @author futao
 * @since 2022/11/7
 */
@RestController
@RequestMapping("in-series")
public class InSeriesController {
    private static final JSONArray DATAS = new JSONArray();

    static {
        for (int i = 0; i < 20; i++) {
            DATAS.add(new JSONObject().fluentPut("id", i).fluentPut("username", "用户-" + i).fluentPut("age", i + 20));
        }
    }

    @GetMapping("/users")
    public JSONObject list() {
        return new JSONObject().fluentPut("code", 0).fluentPut("data", DATAS);
    }


    @GetMapping("/user/{id}")
    public Object detail(@PathVariable("id") String userId) {
        for (Object data : DATAS) {
            if (Objects.equals(((JSONObject) data).get("id"), userId)) {
                return data;
            }
        }
        return null;
    }
}
  1. 创建线程组
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第1张图片

  2. 设置http请求默认值
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第2张图片

  3. 添加用户列表的HTTP取样器
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第3张图片

  4. 查看结果树,查看请求结果
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第4张图片

  5. 为了提取响应结果中所有的id,我们可以先通过JSON Path Tester测试我们的表达式

    1. $.data[x].id:取data数组中索引为x的对象的id的属性值
    2. $.data[x:y].id:取data数组中索引为[x,y)的对象的id的属性值数组
    3. $.data[*].id:取data数组中所有对象的id的属性值数组
      (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第5张图片
      (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第6张图片
      (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第7张图片
  6. 测试成功之后,新建后置处理器,JSON提取器
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第8张图片

  7. 为了便于观测每个步骤的结果,我们可以添加一个调试取样器
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第9张图片

  8. 再次发起请求,可以在查看结果树-> 调试取样器中查看debug数据
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第10张图片

  9. 遍历所有的id,并通过id查询每个用户的详情
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第11张图片
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第12张图片

  10. 在Foreach控制器下新建取样器
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第13张图片

  11. 现在进行测试,即可查看到结果
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第14张图片(九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第15张图片
    (九)通过逻辑处理器串联请求/遍历list结果/foreach控制器_第16张图片

你可能感兴趣的:(测试,jmeter,java,开发语言)