当前位置: 首页 > 知识库问答 >
问题:

在使用JMeter时卡在嵌套循环中。嵌套循环控制器和CSV数据集配置。

张腾
2023-03-14

在我的网站上,我有两个商人行动:搜索和浏览。一次搜索通常会触发三次浏览。

我有一个JMeter测试,它使用商家和商家id号的CSV文件,当按比例运行这个测试时,我希望我站点上的所有商家都被使用。

我在JMeter中进行了映射,如下所示:

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

      我在外循环中设置循环计数=2,在内循环中设置循环计数=3

      我预计两次搜索会触发6个浏览动作。但我得到的是一个搜索,然后是三次浏览,直到我中止测试。

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

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

共有1个答案

鲁龙野
2023-03-14

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

我使您的方案运行如下:

给定以下CSV文件:

merchant1name
merchant2name

和其他2个CSV文件:merchant1name.CSVmerchant2name.CSV,其内容为:

id1
id2
id3

和以下测试计划结构:

  • 线程组(1个线程、1秒上升、1个循环)
    • 环路控制器(2个环路)
      • HTTP请求/${merchantname}
        • BeanShell后处理器(请参阅下面的代码和说明)
        • HTTP请求/${merchantid}
          • CSV数据集配置(filename:merchantname1文件的完整路径,merchantname1应为属性,变量名:merchantid,所有默认值)

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

          • 文件编码-空(我的JMeter使用UTF-8运行,这在大多数情况下是正常的)
          • 分隔符-,(逗号)
          • 允许引用数据-false
          • 在EOF为真时回收
          • 在EOF-FALSE上停止线程
          • 共享模式-所有线程

          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. 使用CSV数据集配置
          2. 如何使用BeanShell

 类似资料:
  • 我用For创建了一个嵌套循环,这是程序代码和输出,然后我尝试了同时循环,得到了不同的结果 对于 虽然 请引导我。。谢谢

  • 问题内容: 我想为迭代嵌套循环添加并发性,但是遇到了麻烦。这个示例使用sync.WaitGroup有什么问题? 我越来越 PRS AAC PRS AAC PRS AAC PRS AAC PRS AAC PRS AAC 因此,您可能会看到它跳过了两个数组的第一个元素,而仅迭代了最后一个元素。任何想法如何解决此问题? 问题答案: 这是一个关闭问题。您需要将值传递到循环内的goroutine中,如下所示

  • 在处理嵌套循环的时候可以中断(break)或继续(continue)外层循环。在这类情形中,循环必须用一 些'label(标签)来注明,并且标签传递给 break/continue 语句。 #![allow(unreachable_code)] fn main() { 'outer: loop { println!("Entered the outer loop");

  • Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者 for 中有 while 也都是允许的。 当 2 个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为 外层循环或 外循环,位于内层的循环结构常简

  • 这是我的代码。我遇到的问题是,我希望将HP在我的PHP代码中的数字转换为我的HP HTML代码,以及与Cylinder相同的内容。我已经想好了其他的东西,但说到这一部分我就卡住了

  • 本文向大家介绍MATLAB嵌套循环,包括了MATLAB嵌套循环的使用技巧和注意事项,需要的朋友参考一下 示例 可以嵌套循环,以在另一个迭代任务中执行迭代任务。考虑以下循环: 我们使用2个迭代器来显示abc和中元素的所有组合1:m,从而得出: 我们还可以使用嵌套循环来组合每次要完成的任务和几次迭代中要完成的任务: 这里我们要计算所有的斐波那契数列,但是n每次只显示第一个元素,所以我们得到 我们可以做