使用JMeter时陷入嵌套循环。嵌套循环控制器和CSV数据集配置。

时间:2014-04-04 12:00:54

标签: jmeter

在我的网站上,我有两个商家操作:搜索和浏览。搜索通常会触发三次浏览。

我有一个JMeter测试,该测试使用商家和商家ID号码的CSV文件,当大规模运行此测试时,我希望使用我网站上的所有商家。

我已经在JMeter中映射了这个:

  • 循环控制器
    • HTTP Sampler(搜索/搜索/ $ {merchant_name})
    • CSV数据集配置(商家名称)
    • 循环控制器
      • HTTP Sampler(Browse / merchant / $ {merchant_id})
      • CSV数据集配置(商家ID)

我在外循环中设置loop count = 2,在内循环中设置loop count = 3

我希望两次搜索能够触发6次浏览操作。但我得到的是搜索,然后是三次浏览,直到我中止测试。

我误解了循环结构吗?这是预期的行为吗?

我如何实现运行搜索的目标,然后进行三次浏览,两次?

1 个答案:

答案 0 :(得分:0)

我认为你误用了CSV数据集配置。

我的方案如下:

给出以下CSV文件:

merchants.csv包含:

merchant1name
merchant2name

以及其他2个CSV文件:merchant1name.csvmerchant2name.csv,内容为:

id1
id2
id3

遵循测试计划结构:

  • 线程组(1个线程,1秒加速,1个循环)
    • 循环控制器(2个循环)
      • HTTP请求/ $ {商家名称}
        • Beanshell后处理器(见下面的代码和说明)
      • CSV数据集配置(文件名:您的merchants.csv文件的完整路径,变量名称:商家名称,所有默认值)
      • 循环控制器(3个循环)
        • HTTP请求/ $ {merchantid}
          • CSV数据集配置(文件名:商家名称1文件的完整路径,商家名称1应为属性,变量名称:商家名称,所有默认值)

通过使用关于CSV数据集配置的“所有默认值”,我假设如下:

  • 文件编码 - 空白(我的JMeter使用UTF-8运行,大多数情况下都可以使用)
  • 分隔符 - ,(逗号)
  • 允许引用的数据 - false
  • 回收EOF - true
  • 在EOF上停止线程 - 错误
  • 分享模式 - 所有主题

Beanshell代码:

props.put("merchantname", vars.get("merchantname"));

这是必需的,因为CSV数据配置不允许在文件路径中使用变量。

内循环中的路径:

C:\jmeter\${__P(merchantname,)}.csv

您可以参考http://glinius.narod.ru/stackoverflow/nestedloop.zip文件。将所有内容从“nestedloop”文件夹(1个jmx文件和3个CSV文件)解压缩到JMeter的/ bin文件夹并运行测试。它将产生8个请求

参考资料:

  1. Using CSV DATA SET CONFIG
  2. How to use BeanShell
相关问题