我在SoapUI中有一个JSONPath存在断言:
如果路径$personResults[0].person.identifiers[0].value
不存在,则声明应通过。
但是断言总是失败,并显示错误:
对路径[$ personResults [0] .person.identifiers [0] .value]的声明失败:PathNotFoundException:在当前上下文中找不到路径“ person”:...(此处为json请求)
这毫无疑问是因为$personResults[0].person
不存在,因此$personResults[0].person.identifiers
也不存在。
...但这正是我要测试的内容!如果路径不存在,则断言需要通过,但由于路径不存在,断言本身会引发错误。
我确信这是由于该路径不存在,因为断言会在我将其指向确实存在的路径时修复。
总结:
$personResults[0]
返回true $personResults[0].person
返回false $personResults[0].person.identifiers
抛出一个
PathNotFoundException
但是我需要一招才能返回false。
答案 0 :(得分:1)
SoapUI使用的JSONPath引擎并不如您所愿。
解决方法是使用XPath。在内部,SoapUI将所有内容都转换为XML,因此您只需使用XPath匹配步骤:
res = solve_bvp(odesys, boundary, x_init, y_init, p=[w**2], max_nodes=10000, tol=1e-6)
print res.message
if res.success:
x_disp = np.linspace(0,L,3001)
y_disp = res.sol(x_disp)
plt.plot(x_disp, y_disp[0])
plt.title("eigenfunction to eigenvalue $\lambda=%.6f$"%res.p[0]);
plt.grid(); plt.show()
期望:
exists(//*:personResults//*:person//*:identifiers)
编辑:您可能需要添加名称空间,如上所述。
答案 1 :(得分:0)
我能够通过脚本断言来解决这个问题:
import groovy.json.JsonSlurper
def ResponseMessage = messageExchange.response.responseContent
def TrimResponse = ResponseMessage.replaceAll('^\"|\"$','').replaceAll('/\\/','')
def jsonSlurper = new JsonSlurper().parseText(TrimResponse)
assert (
jsonSlurper.personResults[0].person == null
|| jsonSlurper.personResults[0].person.identifiers == null
)