1

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

3 回答 3

8

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

于 2013-05-30T05:44:01.427 回答
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")。

这确实有点像一个错误。

于 2016-03-18T21:10:00.470 回答
0

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

于 2013-11-19T17:59:35.540 回答