我是jmeter的新手(我使用的是3.3版),我创建了一个测试计划,其目标是发送一封关于断言失败的电子邮件。
在这封电子邮件中,我想添加一些有关请求名称及其原因的信息
所以我添加了 if controller 这个条件:
${JMeterThread.last_sample_ok}
使用此脚本的beanhell预处理:
以及带有此正文的SMTP采样器:
和回应断言:
我希望在遇到响应代码= 500和上述信息的情况下随时收到电子邮件。
我收到了有关这种情况的电子邮件,但正文信息就是这样:
$ {体}
这是断言结果:
如何得到我需要的东西?
由于
答案 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
变量。