If statement 如何在Jmeter测试计划中实现If-Else块?

If statement 如何在Jmeter测试计划中实现If-Else块?,if-statement,jmeter,If Statement,Jmeter,我有一个任务,我需要根据前面的采样器结果执行两个任务 如果断言失败 { 发送带有错误消息的电子邮件。 }否则 { 在while controller中执行任务。 } 通过在If controller${JMeterThread.last_sample\u ok}==false 我去别的街区有困难。我尝试了两个IF控制器,但没有成功。 这里的情况是只需要执行一个任务IF block或Else block。但在我的例子中,它同时执行两个块和两个任务。 有谁能帮助实现这一目标 JMeter中没有“E

我有一个任务,我需要根据前面的采样器结果执行两个任务

如果断言失败
{
发送带有错误消息的电子邮件。
}否则
{ 
在while controller中执行任务。
}

通过在If controller
${JMeterThread.last_sample\u ok}==false

我去别的街区有困难。我尝试了两个IF控制器,但没有成功。 这里的情况是只需要执行一个任务IF block或Else block。但在我的例子中,它同时执行两个块和两个任务。 有谁能帮助实现这一目标

JMeter中没有“Else”块,只有“If”,因此如果需要“Else”行为,则需要使用2个条件相反的If控制器

但是,对于第二个If控制器,您将无法将其用作此
${JMeterThread.last_sample_ok}
变量,该变量将被SMTP采样器的结果覆盖,因此如果SMTP采样器成功
${JMeterThread.last_sample_ok}
变量将变为因此第二个If控制器也将执行

因此,我建议采取以下方法:

  • 如果您的断言失败

    • 在Beanshell预处理器中,定义自定义变量,如:

      vars.put("run_while_controller", "false");
      
  • 将While控制器置于另一个If控制器下,并使用
    ${run\u While\u Controller}
    作为条件
另一种选择是在发送电子邮件后停止测试,这可以使用取样器完成


接下来,我建议使用并仔细检查所有JMeter变量值,这是查看所有JMeter变量和属性值的最方便的方法。有关深入了解JMeter测试意外行为的更多信息,请参阅文章。

两个IF控制器要求相同的条件写入两次(尽管一次被否定),这是潜在的缺陷源,以便在两个位置上都有一个IF。可疑的。