【问题标题】:Stop Sending Requests By Checking the Response Body in JMeter通过检查 JMeter 中的响应正文停止发送请求
【发布时间】:2020-05-01 20:14:46
【问题描述】:

我想继续调用 REST API,直到响应正文包含 100 个元素。

示例如下:

请求:someurl/get/data

回应: 第一次 API 调用:(包括 2 个元素)

{
  "items" : [
          {
            "name": "abc",
            "id"  : "ajdiw123"
          },
          {
            "name": "abc",
            "id"  : "ajdiw123345"
          }
  ]
}

第二次 API 调用:(4 个元素)

{
  "items" : [
          {
            "name": "abc",
            "id"  : "ajdiw123"
          },
          {
            "name": "def",
            "id"  : "ajdiw145"
          },
          {
            "name": "afc",
            "id"  : "ajdiw113"
          },
          {
            "name": "bbc",
            "id"  : "ajdiw199"
          }
  ]
}

像这个响应正文包含的元素可以更改。在某些时候,它将返回 100 个元素,其中有 100 个不同的 id。我如何识别并停止使用 JMeter 向端点发送请求。

【问题讨论】:

    标签: json rest jmeter


    【解决方案1】:

    根据您的测试计划,可以通过多种方式实现。

    在您的请求中添加 JSON ExtractorJSR223 Assertion

    JSON 提取器设置如下:

    JSR223 断言代码如下:

    String totalIDs = vars.get("id_matchNr");
    Integer result = Integer.valueOf(totalIDs);
    if (result == 100){
        AssertionResult.setFailure(true);
    }
    

    之后,只需将Result Status Action Handler 添加到该请求中,它就会停止特定线程的执行:

    【讨论】:

    • 嗨,谢谢。但它并没有停止。它仍在连续运行。我会在问题中添加我所做的。
    • 我已经向您展示了过程,您应该相应地编写自己的代码!谢谢
    • stackoverflow.com/questions/62020935/… 你能帮我解决这个问题吗:) @Jahan
    【解决方案2】:

    试试这个:

    • 在您的请求中添加后处理器。用于提取任何唯一数组属性(例如 ID)的 JSON 提取器。 JSON 提取器应将 匹配数字字段设置为 -1 并将名称设置为 requestid 并将表达式设置为 $..id
    • 调试采样器
    • 所有这些都应该在一个有条件的 While 控制器中 ${__jexl3(${requestid_matchNr} != 100)}。 “requestid_matchNr”将来自 Debug Sampler 响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多