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;
}
我完全不知道遇到两个反斜杠的错误来自何处,因为两个字符串都包含相同的数据。 有谁知道为什么会发生这种情况并提供可能的解决方案?
答案 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;
}
我希望这也可以帮助其他有类似问题的人。