如果条件在Bean shell采样器中不起作用

时间:2013-05-29 11:38:52

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

我在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);
    }
}

3 个答案:

答案 0 :(得分:8)

您正在使用==比较String,您必须使用.equals()方法来比较它们。 比较为0,你应该做.equals(“0”)

答案 1 :(得分: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(&#34; X&#34;)。

这确实感觉有点像虫子。

答案 2 :(得分:0)

这似乎是jmeter中的beanshell解释器的错误。常规的beanshell shell使用==支持字符串比较。实际上,它是beanshell的功能之一。