Jmeter用户定义变量

时间:2015-08-17 09:04:45

标签: api automation jmeter

我在Jmeter中进行测试。该测试最终发送测试的状态 - “成功”或“失败”。 我创建了一个名为“subject”的“用户定义变量”,并为其赋值“成功”。 在http请求中我放了'BeanShell Assertion',如果测试失败,则将'subject'变量赋予'failure':

if( (ResponseCode != null) && (ResponseCode.equals ("200") == false))
{
    //Failure=true;
  vars.put("subject","failure");

} 

现在,在SMTP采样器中,我发送$ {subject}作为邮件的主题。

采样器无法识别变量(它是空的)。 任何想法?

2 个答案:

答案 0 :(得分:0)

您能否显示测试计划的屏幕截图?我对Beanshell Assertion的居住地特别感兴趣。

JMeter断言有其范围,即给定以下测试结构:

  • 采样器1
    • 断言
  • 采样器2

断言将应用于采样器1

如果有以下测试计划:

  • 采样器1
  • 采样器2
  • 断言

断言将应用于采样器1和采样器2

您的代码没有任何问题,应该是在非“200”响应代码的情况下设置“subject”变量。

顺便说一下,有一个预定义的JMeter变量 - ${JMeterThread.last_sample_ok} - 如果前一个采样器成功则返回“true”,而在另一种情况下返回“false”。最好将它与If Controller结合使用,因为Beanshell已知性能问题,并且在重负载情况下可能成为瓶颈。

答案 1 :(得分:0)

问题在于,当使用'Beanshell Assertion'时,我没有将变量 - $ {subject}传递给它,所以当测试成功时,就像变量从未被赋值一样。