【问题标题】:If condition not working in Bean shell sampler如果条件在 Bean shell 采样器中不起作用
【发布时间】:2013-05-29 11:38:52
【问题描述】:

我正在 Bean Shell 采样器中编写以下脚本,但没有正确执行,

JMeter 永远不会进入 'if' 条件,我做错了什么?

*WRIDTEMP 是一个变量,WRId 是一个具有从 csv 文件中检索到的值的变量。

if((vars.get("WRIDTEMP")==vars.get("WRId")) || vars.get("WRIDTEMP")==0)
{
    String i = vars.get("C"); 
    int counter = Integer.parseInt(i); 
    counter++; 
    vars.put("C", "" + counter); 

    if(counter<10 )
    {
        vars.put("Message",temp+authString);
    }
}

【问题讨论】:

  • 在“Bean Shell 采样器”前面添加一个带有“JMeter 属性”和“JMeter 变量”的“调试采样器”,并将输出粘贴到此处。
  • WRIDTEMP 始终为 0,即我设置的默认值,并且 WRId 会随着其中的值来自 csv 而变化。

标签: testing jmeter load-testing stress-testing beanshell


【解决方案1】:

您正在使用 == 比较字符串,您必须使用 .equals() 方法来比较它们。 要与 0 进行比较,您应该执行 .equals("0")

【讨论】:

  • 哦...所以我们可以在 Jmeter 中使用 equals 方法?我不知道,谢谢...是不是所有基本的Java函数都可以在Jmeter中使用?
  • 是的,大部分
【解决方案2】:

我想我可以确认这个问题。

我不确定这是否是一个错误,但我发现在运行此代码时:

String jira_version = vars.get("jiraVersion");
if (jira_version =="7") ) {
    vars.put("closeIssueTitle_local","Done");
    vars.put("isJIRA6_local","false");
    vars.put("isJIRA7_local","true");

} else if ( jira_version.equals("6") ) {
    vars.put("closeIssueTitle_local","Close Issue");
    vars.put("isJIRA6_local","true");
    vars.put("isJIRA7_local","false");
} else {
    vars.put("closeIssueTitle_local","CLOSEISSUETITLE_BEANSHELL_FAILURE");
    vars.put("isJIRA6_local","ERROR");
    vars.put("isJIRA7_local","ERROR");
}

如果 jira_version 的值是字面意义上的 6 或 7,那么 if 条件总是评估它的最后一个不匹配的情况。

当我将评估条件更改为

if ( jira_version.equals("6") ) {

然后它按预期进行评估。

这就是我的问题。当我在独立的 beanshell 环境中运行它时,例如 bsh-2.0b5.jar,我的代码示例按预期工作。只有在 JMeter 中我必须依赖 .equals("X")。

这确实有点像一个错误。

【讨论】:

    【解决方案3】:

    这似乎是 jmeter 中 beanshell 解释器的一个错误。常规的 beanshell shell 支持使用 == 进行字符串比较。其实是beanshell的特色之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2018-09-11
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多