2015-11-19 10 views
1

Я использую функцию SoapUI JSONPath Mach для утверждения ответа JSON. Положитесь на языке, я могу иметь два разных ответа:SoapUI JSON Определение пути для двух разных строк, не использующих JsonSlurper

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 см скриншот: enter image description here

в частности, как я должен изменить основание:

"Factura no encontrada en el lote." OR "Invoice not found in open batch." 

Благодаря

ответ

1

К сожалению, это не представляется возможным с помощью 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

enter image description here

На этом этапе я думаю, что лучший подход - ваш, используя jsonSlurper для выполнения утверждения.

Надеюсь, что это помогает,

+0

Спасибо за такой тщательный ответ, я думал использовать регулярные выражения, но не мог понять, шаблон, во всяком случае, я думаю, с помощью JsonSlurper здесь гораздо лучше подход. – QB1979

+0

@ QB1979 regex - лучший подход, который я нашел в соответствии с вашими запросами ... но, конечно, ваш первый подход намного лучше:: '. – albciff

 Смежные вопросы

  • Нет связанных вопросов^_^