如果其中一个HTTP请求失败,JMeter会发送电子邮件

时间:2017-03-14 09:33:52

标签: java if-statement jmeter performance-testing

我打算在我的JMeter中创建测试计划,如下所示

  • 测试计划
  • 线程组
    • 循环控制器
      • HTTP请求采样器1
      • HTTP请求采样器2
      • HTTP请求采样器3
      • HTTP请求采样器4
      • HTTP请求采样器5
      • HTTP请求采样器6
      • HTTP请求采样器7
      • HTTP请求采样器8
    • 如果Controller条件$ {JMeterThread.last_sample_ok} == false
      • SMTP Sampler

我想全天候运行测试。 如果一个(或多个)HTTP请求采样器出于任何原因返回错误,则执行SMTP采样器并向我发送电子邮件。

如果HTTP请求采样器都没有返回错误,则不要执行SMTP采样器,而是永远重复循环。

我不太了解if控制器条件$ {JMeterThread.last_sample_ok}。

  1. JMeterThread.last_sample_ok 是什么意思?
    Last_sample_ok仅表示最后一个HTTP请求采样器(在我的情况下仅限HTTP Request Sampler 8)?如果我想检查每个采样器1-8的条件,可以在这做什么?

  2. JMeterThread 是JMeter Java类还是Java对象?

  3. last_sample_ok 外,还有哪些其他方法可以应用于JMeterThread对象?
  4. 感谢。

2 个答案:

答案 0 :(得分:2)

  1. JMeterThread.last_sample_ok是 JMeterThread 类的静态String字段。

    JMeterThread 类源代码中的这一行显示LAST_SAMPLE_OK将设置为parent.isSuccessful()布尔变量的String表示形式,其中 parent 是SampleResult对象:

        threadContext.getVariables().put(LAST_SAMPLE_OK, Boolean.toString(parent.isSuccessful()));
    

    基本上,LAST_SAMPLE_OK将指示最后一个样本是否成功(直到它被下一个采样器重置)。

    是的,如果JMeterThread.last_sample_ok为true,则最后一个采样器成功。在您的情况下,它是HTTP请求采样器8。

    您可以将所有 HTTP采样器添加为事务控制器的子项,然后选中“生成父样本”复选框。

    这将使JMeter为事务控制器的所有内部样本生成父样本。如果其中一个子采样器出现故障,父样本也将失败。

    交易控制器后面添加如果控制器

    现在JMeterThread.last_sample_ok将与生成的父样本相关。

  2. JMeterThread class in the org.apache.jmeter.threads package

  3. LAST_SAMPLE_OK不是方法,而是静态字段。 JMeterThread 类中还有一个字段和许多方法。

答案 1 :(得分:0)

您可以这样做的一种方法是使用Jenkins Email Extension Plugin,您可以将其设置为在构建失败时通过电子邮件发送给您。 (因此,当脚本的HTTP请求失败时,您可能会失败构建。)

https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin