Groovy 如何通过JMeter中的电子邮件获取断言成功或失败消息?

Groovy 如何通过JMeter中的电子邮件获取断言成功或失败消息?,groovy,jmeter,smtp,assertion,jsr223,Groovy,Jmeter,Smtp,Assertion,Jsr223,我试图通过电子邮件获得断言结果。 在我的测试计划中有几个端点(请求)和相关的断言 下面是我在JSR223预处理器中使用的Groovy代码。在我的SMTP采样器中,我一直在使用${body}从脚本中获取结果 但在电子邮件中,当所有断言都通过时,打印null;当断言失败时,打印异常 我需要通过电子邮件获得以下信息 所有断言都传递时的成功消息 当出现故障时,带有故障请求名称的故障消息 JSR223预处理器在每个采样器的 prev代表previous 假设以上两点,当JSR223预处理器在测试中的第一个

我试图通过电子邮件获得断言结果。 在我的测试计划中有几个端点(请求)和相关的断言

下面是我在JSR223预处理器中使用的Groovy代码。在我的SMTP采样器中,我一直在使用
${body}
从脚本中获取结果

但在电子邮件中,当所有断言都通过时,打印null;当断言失败时,打印异常

我需要通过电子邮件获得以下信息

  • 所有断言都传递时的成功消息
  • 当出现故障时,带有故障请求名称的故障消息
  • JSR223预处理器在每个采样器的
  • prev
    代表previous
  • 假设以上两点,当JSR223预处理器在测试中的第一个采样器之前执行时,前面的结果还不存在,您只需要添加另一个条件来检查它是否为null

    import org.apache.jmeter.assertions.AssertionResult
    
    if (prev != null) { // ensure that we have the previous sampler result
        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());
    }
    

    谢谢你,德米特里。但是,当断言传递时获取“null”,当断言失败时获取异常。如何通过电子邮件获得通过和不通过消息?
    import org.apache.jmeter.assertions.AssertionResult
    
    if (prev != null) { // ensure that we have the previous sampler result
        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());
    }