首页 > 解决方案 > 如果路径不存在,为什么这个正在检查路径的 SoapUI 断言会失败?

问题描述

我在 SoapUI 中有一个 JSONPath 存在断言:

在此处输入图像描述

如果路径不存在,则断言应该通过。$personResults[0].person.identifiers[0].value

但是断言总是失败并出现错误:

路径 [$personResults[0].person.identifiers[0].value] 的断言失败:PathNotFoundException:Path 'person' not found in the current context: ... (json request here)

这无疑是因为$personResults[0].person不存在,因此也不存在$personResults[0].person.identifiers

...但这正是我想要测试的!如果路径不存在,则断言需要通过,但断言本身会抛出错误,因为路径不存在。

我确信这是由于路径不存在,因为如果我将断言指向确实存在的路径,它就会修复。

总结一下:

但我需要最后一个返回false。

标签: soapui

解决方案


SoapUI 使用的 JSONPath 引擎并不像您想的那样成熟。

解决方法是使用 XPath。SoapUI 在内部将所有内容都转换为 XML,因此您只需使用 XPath 匹配步骤:

exists(//*:personResults//*:person//*:identifiers)

期待:

false

编辑:您可能需要添加命名空间,如上所述。


推荐阅读