【问题标题】:How to loop a jmeter request?如何循环一个jmeter请求?
【发布时间】:2019-12-10 22:12:41
【问题描述】:

我有一个请求https://***********/projects?page=1

给出响应

 {
    "QueryInfo": {
      "QryNa": "Q_PTE1",
      "resourc": "https://******************QueryResultsAsXML.v2/q/?auth=",
      "CurrentPage": "page=1",
      "FirstPage": "page=1",
      "LastPage": "page=6",
      "Rows": "1000",
      "TotalRows": "6000"
    } 
}

我必须验证 LastPage,如果它大于 1,我必须对从 1 到 6 的所有页码运行相同的上述请求。我已经在正则表达式中捕获了页码。你能告诉这个场景如何循环吗?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    添加带有条件${__jexl3("${LastPage}" > 1)} 的If Controller,其中LastPage 是正则表达式提取器的引用名称。

    添加loop controller 并将循环计数更改为${__intSum(${LastPage},-1)}

    使用以下配置在循环控制器下添加Counter

    • 开始:2
    • 增量:1
    • 最大值:${LastPage}
    • 参考名称:pageCounter
    • 确保同时检查Track counter independently for each user 和Reset counter on each Thread Group iteration

    在循环控制器下复制并粘贴您的 HTTP 请求并将 page 参数更改为 page=${pageCounter}

    【讨论】:

      【解决方案2】:
      1. 将Regular Expression Extractor 添加为返回上述响应的请求的子项,并将其配置为:

        • 创建变量的名称:任何有意义的,即lastPage
        • 正则表达式:"LastPage"\s?:\s?"page=(\d+)",
        • 模板:$1$
      2. 在请求后添加If Controller并使用以下条件:

        ${__groovy((vars.get('lastPage') as int) > 1,)}
        
      3. Loop Controller 作为 If 控制器的子级,并使用以下表达式作为“循环计数”:

        ${__groovy((vars.get('lastPage') as int) -1,)}
        
      4. 将HTTP Request 采样器添加为循环控制器的子级,并将请求正文修改为:

        {
          "QueryInfo": {
            "QryNa": "Q_PTE1",
            "resourc": "https://******************QueryResultsAsXML.v2/q/?auth=",
            "CurrentPage": "page=${__intSum(${__jm__Loop Controller__idx},2,)}",
            "FirstPage": "page=1",
            "LastPage": "page=6",
            "Rows": "1000",
            "TotalRows": "6000"
          }
        }   
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        相关资源
        最近更新 更多