我在Jmeter中进行测试。该测试最终发送测试的状态 - “成功”或“失败”。 我创建了一个名为“subject”的“用户定义变量”,并为其赋值“成功”。 在http请求中我放了'BeanShell Assertion',如果测试失败,则将'subject'变量赋予'failure':
if( (ResponseCode != null) && (ResponseCode.equals ("200") == false))
{
//Failure=true;
vars.put("subject","failure");
}
现在,在SMTP采样器中,我发送$ {subject}作为邮件的主题。
采样器无法识别变量(它是空的)。 任何想法?
答案 0 :(得分:0)
您能否显示测试计划的屏幕截图?我对Beanshell Assertion的居住地特别感兴趣。
JMeter断言有其范围,即给定以下测试结构:
断言将应用于采样器1
如果有以下测试计划:
断言将应用于采样器1和采样器2
您的代码没有任何问题,应该是在非“200”响应代码的情况下设置“subject”变量。
顺便说一下,有一个预定义的JMeter变量 - ${JMeterThread.last_sample_ok}
- 如果前一个采样器成功则返回“true”,而在另一种情况下返回“false”。最好将它与If Controller结合使用,因为Beanshell已知性能问题,并且在重负载情况下可能成为瓶颈。
答案 1 :(得分:0)
问题在于,当使用'Beanshell Assertion'时,我没有将变量 - $ {subject}传递给它,所以当测试成功时,就像变量从未被赋值一样。