К сожалению, это не представляется возможным с помощью 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
для выполнения утверждения.
Надеюсь, что это помогает,
Спасибо за такой тщательный ответ, я думал использовать регулярные выражения, но не мог понять, шаблон, во всяком случае, я думаю, с помощью JsonSlurper здесь гораздо лучше подход. – QB1979
@ QB1979 regex - лучший подход, который я нашел в соответствии с вашими запросами ... но, конечно, ваш первый подход намного лучше:: '. – albciff