SoapUI JSON 不使用 JsonSlurper 的两个不同字符串的路径断言
SoapUI JSON Path assertion for two different strings not using JsonSlurper
我正在使用 SoapUI JSONPath Mach 功能来断言 JSON 响应。取决于一种语言,我可以有两种不同的反应:
Factura no encontrada en el lote.
或 Invoice not found in open batch.
我知道我可以使用 JsonSlurper 做到这一点:
assert jsonSlurper.header.rspMsg in ["Factura no encontrada en el lote.","Invoice not found in open batch."]
但是,我正在寻找的是在 SoapUI 断言功能中使用它,请参见屏幕截图:
具体的bottom应该怎么改:
"Factura no encontrada en el lote." OR "Invoice not found in open batch."
谢谢
不幸的是,使用 JSONPath match assert
这是不可能的(至少对于现有版本,也许在未来......)。对于预期结果中的此断言,仅允许使用字符串(或扩展将被评估为字符串的表达式),因此无法使用 OR
运算符设置预期值。
另一种方法是将 OR
运算符放在 jsonpath 表达式中,并按预期结果使用 true
。
例如,对于您的情况,您可以使用类似的东西:
$.header.[?(@.['rspMsg'] == 'Factura no encontrada en el lote.' || ?(@.['rspMsg'] == 'Invoice not found in open batch.']
并在预期结果中使用 true
。
然而已经存在另一个问题,SOAPUI 5.2.1 使用 com.jayway.jsonpath
版本 0.9.1 并且此版本不支持 ||
运算符,因此这不起作用。
所以最后的尝试可能是使用 JSONPath Regex match assert
,它根据提供的正则表达式评估 JSONPath 表达式,并期望 true 或 false。使用这种方法,您可以使用:
JSONPath 表达式: $.header.rspMsg
正则表达式: (Factura no encontrada en el lote\.)|(Invoice not found in open batch\.)
预期结果: true
在这一点上,我认为更好的方法是使用 jsonSlurper
来执行断言。
希望这对您有所帮助,
我正在使用 SoapUI JSONPath Mach 功能来断言 JSON 响应。取决于一种语言,我可以有两种不同的反应:
Factura no encontrada en el lote.
或 Invoice not found in open batch.
我知道我可以使用 JsonSlurper 做到这一点:
assert jsonSlurper.header.rspMsg in ["Factura no encontrada en el lote.","Invoice not found in open batch."]
但是,我正在寻找的是在 SoapUI 断言功能中使用它,请参见屏幕截图:
具体的bottom应该怎么改:
"Factura no encontrada en el lote." OR "Invoice not found in open batch."
谢谢
不幸的是,使用 JSONPath match assert
这是不可能的(至少对于现有版本,也许在未来......)。对于预期结果中的此断言,仅允许使用字符串(或扩展将被评估为字符串的表达式),因此无法使用 OR
运算符设置预期值。
另一种方法是将 OR
运算符放在 jsonpath 表达式中,并按预期结果使用 true
。
例如,对于您的情况,您可以使用类似的东西:
$.header.[?(@.['rspMsg'] == 'Factura no encontrada en el lote.' || ?(@.['rspMsg'] == 'Invoice not found in open batch.']
并在预期结果中使用 true
。
然而已经存在另一个问题,SOAPUI 5.2.1 使用 com.jayway.jsonpath
版本 0.9.1 并且此版本不支持 ||
运算符,因此这不起作用。
所以最后的尝试可能是使用 JSONPath Regex match assert
,它根据提供的正则表达式评估 JSONPath 表达式,并期望 true 或 false。使用这种方法,您可以使用:
JSONPath 表达式: $.header.rspMsg
正则表达式: (Factura no encontrada en el lote\.)|(Invoice not found in open batch\.)
预期结果: true
在这一点上,我认为更好的方法是使用 jsonSlurper
来执行断言。
希望这对您有所帮助,