【问题标题】:Jmeter user Defined VariableJmeter 用户定义变量
【发布时间】:2015-08-18 03:45:36
【问题描述】:

我正在 Jmeter 中运行测试。该测试最终发送测试的状态 - “成功”或“失败”。 我创建了一个名为“主题”的“用户定义变量”,并为其分配了值“成功”。 在 http 请求中,我放置了“BeanShell 断言”,如果测试失败,则将“主题”变量分配为“失败”:

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

} 

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

采样器无法识别变量(它是空的)。 有什么想法吗?

【问题讨论】:

  • 你用 BeanShell 后处理器试过了吗?
  • 是的。 BeanShell 断言确实有效。我检查了它。关键是,如果“主题”变量未更改(更改为“失败”),则未设置默认值(成功)。我已经尝试过“成功”(带撇号)和成功(不带撇号)

标签: api automation jmeter


【解决方案1】:

您能展示一下您的测试计划的屏幕截图吗?我对 Beanshell Assertion 所在的位置特别感兴趣。

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

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

断言将应用于采样器 1

如果是以下测试计划:

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

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

您的代码没有问题,它应该设置“主题”变量以防非“200”响应代码。

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

【讨论】:

  • 非常感谢。我发现了我的问题(见我的回答)。我也会试试你的建议。
【解决方案2】:

问题在于,当使用“Beanshell 断言”时,我没有将变量 - ${subject} 传递给它,所以当测试成功时,就像从未分配过变量一样。

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多