Java Jmeter-如何在断言失败时正确发送请求名称和原因
我是jmeter的新手(我使用的是3.3版),我创建了一个测试计划,目标是在断言失败时发送一封电子邮件 在这封电子邮件中,我想添加一些关于请求名称及其原因的信息 因此,我在以下条件下添加了和if controller:Java Jmeter-如何在断言失败时正确发送请求名称和原因,java,email,jmeter,automated-tests,Java,Email,Jmeter,Automated Tests,我是jmeter的新手(我使用的是3.3版),我创建了一个测试计划,目标是在断言失败时发送一封电子邮件 在这封电子邮件中,我想添加一些关于请求名称及其原因的信息 因此,我在以下条件下添加了和if controller: ${JMeterThread.last_sample_ok} 使用此脚本的beanshell预处理: 以及具有此主体的SMTP采样器: 和响应断言: 我想在任何时候收到一封电子邮件,只要它符合响应代码=500的条件和上述信息 我在这种情况下收到了电子邮件,但身体信息是这
${JMeterThread.last_sample_ok}
使用此脚本的beanshell预处理:
以及具有此主体的SMTP采样器:
和响应断言:
我想在任何时候收到一封电子邮件,只要它符合响应代码=500的条件和上述信息
我在这种情况下收到了电子邮件,但身体信息是这样的:
${body}
这是断言结果:
我做错了什么
如何得到我需要的
谢谢如果最后一个采样器正常,脚本将发送一封电子邮件,因此断言也正常,因此
body
变量将不包含任何值
只需将if语句调整为${JMeterThread.last_sample_ok}
,然后将HTTP采样器HTTP请求-POST/articles
移到if控制器上方
这将使您的脚本在采样器失败时发送一封电子邮件,您的
正文将包含失败消息。您的prev
变量未在Beanshell预处理器中定义(它仅存在于后处理器和侦听器中,我建议使用ctx.getPreviousResult()
而不是ctx
代表的位置
您还需要启用HTTP请求GET-posts
,因为这将是您感兴趣的“以前的结果”
请注意,对于任何形式的脚本,请考虑在下一个可用的机会迁移到Groovy语言。您甚至应该能够重新使用相同的代码,因为我在其中没有看到任何BeeS壳特定的特性。请参阅文章以了解JMt.中的Groovy脚本编写的更多信息。
您的IF控制器背后的逻辑是什么?因为在我看来,脚本只会在最后一个示例正常的情况下发送电子邮件,因此断言中不会有数据将其添加到变量“body”,因为采样器没有失败。使用此条件调整脚本!${JMeterThread.last_sample_ok},该脚本根本没有运行只是为了澄清,如果HTTP请求-获取-发布失败,您希望该脚本发送电子邮件,对吗?您启用了该采样器吗?是的,我想实现它,请参阅我的下一次更新。我仍然看到HTTP请求-获取-发布采样器是禁用的。我认为这与我要测试其他请求无关uest(博文)谢谢Dmitri,请问你对prev变量的意思是什么?你的prev.getAssertionResults()
应该替换为ctx.getPreviousResult().getAssertionResults())
我在电子邮件正文中得到一个空值。您必须移动post请求并将其放在if控制器之前,并将SMTP采样器单独留在if控制器中