字符串比较不匹配,但"包含"匹配



我在使用 groovy 时遇到了一个奇怪的问题,我找到了解决方法,但我非常不满意,所以也许有人可以帮助我:

我使用 ReadyAPI 2.8。在我的测试用例中,我有时髦的步骤。 在其中之一中,我从之前的测试步骤中恢复了一个字符串,如果它与字符串"TJA470"匹配,我想进行特定的处理。前面的测试步骤给出了一个字符串,该字符串是 ssh 命令的输出。

这是时髦的步骤代码:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
// this returns me the data as a String
log.info hbox_ref 
log.info ""$hbox_ref"" // to check if there is no spurious blank
log.info hbox_ref.class
log.info (hbox_ref == "TJA470") => returns false
log.info (hbox_ref.equals("TJA470")) => returns false
log.info (hbox_ref.contains("TJA470")) => returns true

这是控制台结果:

Fri Sep 20 16:13:17 CEST 2019: INFO: TJA470
Fri Sep 20 16:13:17 CEST 2019: INFO: "TJA470
"
Fri Sep 20 16:13:17 CEST 2019: INFO: class java.lang.String
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: true

尽管存在差异,但前向测试是 == 或等于,我在相同类型的所有其他比较中使用这些测试并且它有效。

正如你在这里看到的,大多数逻辑案例都返回 false,我真的无法弄清楚为什么。

如果我在像"时髦游乐场"这样的工具中执行相同的脚本,它会按预期工作! :(

我根本不是时髦的专家,一定有什么我错过了,但我觉得这很棘手!

如果有人可以帮忙... 谢谢

多亏了SO,我发现了问题: 通过复制/粘贴问题中的控制台返回,它表明文本末尾有一个特殊字符。这在 SOAPUI 日志输出中不可见... 我在脚本中添加了以下处理:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
hbox_ref = hbox_ref.replaceAll("[^a-zA-Z0-9]+","")

hbox_ref = hbox_ref.replaceAll("[^\w]+","")

这给了

log.info (hbox_ref == "TJA470") => returns true (at last !)

更优雅的解决方案(感谢SiKing(:

(hbox_ref.trim() == "TJA470")

而不是使用替换全部

相关内容

最新更新