【问题标题】:JMeter: Is it possible to add HTTP Request sampler during run?JMeter:是否可以在运行期间添加 HTTP 请求采样器?
【发布时间】:2019-02-28 12:51:12
【问题描述】:

我有一个 HTTP 请求,它返回一个包含多个 url(主要是图像资源)的 JSON 对象。 我不知道响应 JSON 中的 url 数量,并且该数量可能会随时间变化。 我需要为收到的每个 url 创建一个 HTTP 请求。

是否可以在运行 JMeter 流程​​时创建 HTTP 请求采样器? 是否有其他解决方案可以建议我将 HTTP 请求发送到 url 列表?

谢谢

【问题讨论】:

    标签: jmeter jmeter-5.0


    【解决方案1】:
    1. JSON Extractor 添加为主请求的子请求,并提出JSON Path 表达式来提取图像链接以及您想要访问的任何其他URL
    2. 添加 ForEach Controller 并将其配置为读取步骤 1 中的 JMeter Variable 引用名称并将输出变量设置为任何有意义的值
    3. HTTP Request 采样器添加为 ForEach 控制器的子级,并将其配置为使用输出变量
    4. 就是这样,JMeter 将为原始 JSON 中存在的每个 URL 触发一个 HTTP 请求采样器

    • 假设您有以下 JSON:

      {
        "urls": [
          {
            "url": "http://example.com"
          },
          {
            "url": "http://jmeter.apache.org"
          },
          {
            "url": "http://jmeter-plugins.org"
          }
        ]
      }
      
    • 您可以使用以下 JSON 提取器设置将 URL 提取到 JMeter 变量中:

      它将为您提供以下 JMeter 变量:

      url_1=http://example.com
      url_2=http://jmeter.apache.org
      url_3=http://jmeter-plugins.org
      url_matchNr=3
      

    • 现在,如果您添加 ForEach 控制器并进行如下配置:

    • 您将能够在作为 ForEach 控制器的子级的 HTTP 请求采样器中将 URL 称为 ${current_url}

    【讨论】:

    • ForEach 控制器中的 HTTP 请求采样器使用 ${current_url},但它还在请求前添加了“http://”。因此它失败了GET http://[http://www.some url]/
    • 将您的${current_url} 放入 HTTP 请求采样器的“路径”部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2013-10-03
    • 2021-04-03
    • 1970-01-01
    相关资源
    最近更新 更多