启动下一个Loop Controller迭代

时间:2018-06-08 15:31:05

标签: loops groovy controller jmeter

我想在Thread Group中的一个Sampler错误之后配置一些类似于Action的东西,但是在Loop Controller级别。

例如,如果一个Sampler失败,而不是Start Next Thread Loop,我想启动Next Loop Controller Loop,我认为这可以使用groovy + JMeter属性实现,但我找不到正确的方法来做到这一点

3 个答案:

答案 0 :(得分:1)

从这个人那里尝试直到控制器 - http://www.testautomationguru.com/jmeter-until-controller/。 这应该有所帮助。

答案 1 :(得分:0)

您可以使用While循环代替Loop Controller使用While Controller

  1. 设置对采样器错误采取的操作以继续线程组。
  2. 初始化计数器并使用beanshell sampler将其值设置为1,在while循环开始之前保留此采样器

    添加以下代码

      

    vars.put("计数器"" 1&#34);

  3. enter image description here

    1. 添加A while循环并保留要循环运行的采样器集。
    2. 将以下条件添加到while循环
    3.   

      $ {__使用Javascript(parseInt函数($ {计数器})< = 15,)}

      这里15表示循环次数(循环计数) enter image description here

      1. 在while循环中向您的第一个采样器添加一个beanshell post processor 并添加以下代码(增加计数器值)
      2.   

        int counter = Integer.parseInt(vars.get(" counter"))+1;   vars.put("计数器",Integer.toString(计数器));

        enter image description here

        While循环中的下一个采样器嵌入了if条件

          

        $ {JMeterThread.last_sample_ok}

        如下所示您必须为每个采样器执行此操作,因为我们可能不知道错误发生的位置。

        enter image description here

        在我的情况下,无论错误如何,我都希望运行循环15次,即使在收到错误后也可以看到它执行了15次 enter image description here

        有关While控制器关注this link..

        的详细信息

        请告诉我它是否有帮助..

答案 2 :(得分:0)

最简单的方法是使用If Controller

  1. 如果想要重新启动循环的采样器之后添加如果控制器
  2. 将所有位于If控制器“下方”的请求作为If控制器的子项
  3. 使用${JMeterThread.last_sample_ok}作为If控制条件
  4. 就是这样,现在如果Controller的子节点仅在前一个采样器成功时执行,否则它将是下一个Loop Controller迭代。

    JMeter If Controller Demo

    正如您从上面的演示中看到的那样Some Other Sampler仅在Some Sampler成功时执行。