JMeter:是否可以在运行期间添加HTTP请求采样器?

时间:2019-02-28 12:51:12

标签: jmeter jmeter-5.0

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

在运行JMeter流时是否可以创建HTTP请求采样器? 为了将HTTP请求发送到网址列表,可以建议我采取另一种解决方案吗?

谢谢

1 个答案:

答案 0 :(得分:2)

  1. JSON Extractor添加为主要请求的子项,并提出一个JSON Path表达式,以提取指向图像以及您希望访问的其他URL的链接
  2. 添加ForEach Controller并将其配置为从步骤1中读取JMeter Variable引用名称,并将输出变量设置为有意义的任何内容
  3. HTTP Request采样器添加为ForEach Controller的子代,并将其配置为使用输出变量
  4. 就是这样,JMeter将为原始JSON中存在的每个URL触发一个HTTP Request采样器。

  • 鉴于您具有以下JSON:

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

    enter image description here

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

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

    enter image description here

  • 现在是否添加ForEach Controller并将其配置为:

    enter image description here

  • 您将能够在HTTP请求采样器(作为ForEach控制器的子代)中将URL引用为${current_url}

    enter image description here