Jmeter - 如何在断言失败时正确发送请求名称和原因

时间:2018-01-16 16:17:02

标签: java email jmeter automated-tests

我是jmeter的新手(我使用的是3.3版),我创建了一个测试计划,其目标是发送一封关于断言失败的电子邮件。

在这封电子邮件中,我想添加一些有关请求名称及其原因的信息

所以我添加了 if controller 这个条件:

${JMeterThread.last_sample_ok}

enter image description here

使用此脚本的beanhell预处理:

enter image description here

以及带有此正文的SMTP采样器:

enter image description here

和回应断言:

enter image description here

我希望在遇到响应代码= 500和上述信息的情况下随时收到电子邮件。

我收到了有关这种情况的电子邮件,但正文信息就是这样:

$ {体}

这是断言结果:

enter image description here 我做错了什么?

如何得到我需要的东西?

由于

2 个答案:

答案 0 :(得分:2)

您的prev变量未在Beanshell预处理器中定义(仅适用于PostProcessor和Listener,我建议使用ctx.getPreviousResult()代替ctx代表JMeterContextService实例。

您还需要启用HTTP Request GET - posts,因为这将是以前的结果"之前的结果"你对此感兴趣。

请注意starting from JMeter 3.1 it is recommended to use Groovy适用于任何形式的脚本,因此请考虑在下一个可用机会上迁移到JSR223 PreProcessor和Groovy语言。您甚至可以重复使用相同的代码,因为我没有看到任何特定于Beanshell的功能。有关JMeter中Groovy脚本的更多信息,请参阅Apache Groovy - Why and How You Should Use It文章。

答案 1 :(得分:0)

如果最后一个采样器没问题,脚本正在发送电子邮件,因此断言也没问题,因此body变量不会保留任何值。

只需将if语句调整为!${JMeterThread.last_sample_ok},然后将您的HTTP采样器HTTP Request - POST/articles上移到if控制器上方。

这将使您的脚本在采样器发生故障时发送电子邮件,并且您将拥有保存失败消息的body变量。