JMeter BeanShell断言包含" \\"之后""

时间:2015-04-02 13:25:01

标签: jmeter beanshell

My BeanShell Assertion将以下结果作为错误返回:

  

断言错误:真实   断言失败:错误   断言失败消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval
  源文件:内联评估:``String sentText = \"更改了TEXT \&#34 ;; String receivedText = \"更改了TEXT \&#34 ;; 。 。 。 ''令牌解析错误:第2行第18列的词汇错误。遇到:" \\" (92),之后:""

我使用BeanShell PreProcessor设置如下属性,并在编辑中使用它,工作正常。

  

$ {__ setProperty(textEdit,\"更改了文字\")}

然后我使用GET调用获取信息,并使用以下正则表达式来获取特定信息。

  

\" edittedText \":(?\" * \")}

然后我使用BeanShell Assertion将正则表达式的结果放在属性textEditPost中,就像这样。在该BeanShell断言中,我还检查更改的值是否为新值。

${__setProperty(textEditPost,${textEditPost})}
String sentText = ${__property(textEdit)};
String receivedText = ${__property(textEditPost)};

if (sentText.equals(receivedText))
{
    Failure = false;
}
else
{
    Failure = true;
    FailureMessage = "The Text does not match, expected: " + sentText + " but found: " + receivedText;
}

我完全不知道遇到两个反斜杠的错误来自何处,因为两个字符串都包含相同的数据。 有谁知道为什么会发生这种情况并提供可能的解决方案?

1 个答案:

答案 0 :(得分:0)

我在为其他事情做了一些BeanShell断言之后发现了这个问题。而且我现在因为没有意识到这一点而感到非常愚蠢...

问题是属性textEdit中的值是\"Changed the TEXT\",因此以反斜杠开头。由于这个反斜杠,程序在尝试将其分配给String变量sentText或直接在if语句中使用属性时不知道如何处理它。

通过在引号之间放置属性调用,程序可以正确地将它保存在String变量中。像这样:

${__setProperty(textEditPost,${textEditPost})}
String sentText = "${__property(textEdit)}";
String receivedText = "${__property(textEditPost)}";

if (sentText.equals(receivedText))
{
    Failure = false;
}
else
{
    Failure = true;
    FailureMessage = "The Text does not match, expected: " + sentText + " but found: " + receivedText;
}

我希望这也可以帮助其他有类似问题的人。