通过在JMeter中检查响应正文来停止发送请求

时间:2020-05-01 10:41:29

标签: json rest jmeter

我想继续调用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将请求发送到端点。

2 个答案:

答案 0 :(得分:2)

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

为您的请求添加JSON ExtractorJSR223 Assertion

JSON提取器设置如下:

enter image description here

JSR223断言代码如下:

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

在那之后,只需向该请求添加一个Result Status Action Handler,它将停止特定线程的执行:

enter image description here

答案 1 :(得分:1)

尝试一下:

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