我在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);
}
}
答案 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的功能之一。