【问题标题】:How to send an Email of Assertion Result Failure message in jmeter如何在 jmeter 中发送断言结果失败消息的电子邮件
【发布时间】:2015-12-01 10:38:31
【问题描述】:

我是 Jmeter 的新手。 我有一个任务,我想发送一封断言结果失败的电子邮件。 我有一个 http 请求,我正在检查 API 的结果,如果它包含适当的响应,则测试成功。 现在的问题是,如果测试失败,我需要通过电子邮件发送结果(带有失败消息)。 我已经正确配置了 SMTP Sampler,它正在发送邮件。但我不知道如何将响应断言失败消息作为消息正文与该电子邮件一起发送。 有人可以帮忙吗?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    您可以使用Beanshell PreProcessor 来从前一个采样器中获取断言失败消息。

    1. 将 Beanshell 预处理器添加为 SMTP 请求采样器的子级
    2. 将以下代码放入预处理器的“脚本”区域:

      import org.apache.jmeter.assertions.AssertionResult;
      
      AssertionResult[] results = prev.getAssertionResults();
      StringBuilder body = new StringBuilder();
      for (AssertionResult result : results) {
          body.append(result.getFailureMessage());
          body.append(System.getProperty("line.separator"));
      }
      vars.put("body", body.toString());
      
    3. 在 SMTP 请求采样器中使用 ${body} JMeter 变量。

    请记住,它仅适用于上一个采样器的断言失败消息

    有关 JMeter 测试中的 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南。

    【讨论】:

    • 是否可以将 If 控制器用于 SMTP 请求采样器?实际上,如果断言失败,我只需要在这种情况下发送电子邮件。如果成功,我不想发送任何电子邮件。目前它正在发送电子邮件以防成功以及错误消息为“NULL”。因此,我使用了条件为 "${body}" != "null" 的 If 控制器。但它不工作。你能帮我解决这个问题吗?
    • 使用以下条件:!${JMeterThread.last_sample_ok} - 它使用预定义的变量,如果前一个采样器成功则返回“true”,否则返回“false”。详情见How to Use JMeter's 'IF' Controller and get Pie文章
    • 注意:如果一个测试计划中有多个线程组,那么每个线程组都应该有 SMTP Sampler 作为子元素。并且IfController 必须是 SMTP Sampler 的父级。
    • 感谢@DmitriT 的回复,请问请求是否作为 SMTP 采样器的子项插入?
    猜你喜欢
    • 2017-10-06
    • 2020-09-16
    • 2020-08-24
    • 2021-01-25
    • 2016-08-20
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多