SoapUI (Pro)> DataDriven> Утверждение содержимого сообщения - как обрабатывать десятичные значения - PullRequest
0 голосов
/ 07 декабря 2018

Я использую ReadyAPI (SoapUI Pro) для тестирования RestAPI.В качестве тестовых данных я использую DataSource (DataDriven), где я даю входы (вход API) из Excel.И чтобы проверить ответ API, я сравниваю вывод из Excel (ожидаемые результаты уже в Excel).Для этого я использую Message Content Assertion (так как он простой и не очень технический).Теперь проблема в том, что в Excel Ожидаемый вывод, скажем, 10,0, но когда я использую это поле Excel для утверждения в SoapUI (Pro), он читает 10,0> 10. Но из ответа API значение 10,0.Так что утверждение не удалось.Я пытался справиться с этим в Excel, но безуспешно.

Так может на уровне SoapUI мы справимся с этим в Утверждении?Если это невозможно с помощью утверждения содержимого сообщения, то возможно ли это с помощью JsonPath Exsence Match (у меня мало знаний о Json)

1 Ответ

0 голосов
/ 07 декабря 2018

Я считаю, что утверждение содержимого сообщения всегда ищет строки.Таким образом, ваш «10.0» будет рассматриваться как строка.Содержимое вашего входного файла может не обрабатываться таким же образом.

Другим вариантом проблемы может быть ваш входной файл, в котором в качестве ожидаемого значения указано «10.0», но вы получаете «10,0» отответ.

Возможно, это можно исправить несколькими способами.Я предполагаю, что ваше утверждение содержимого сообщения содержит переменную, которая ссылается на ваш источник данных что-то вроде $ {DataSource # ColumnName}?Будьте осторожны с этим!Если вы получите длинный ответ, ваше утверждение будет положительным, если это значение будет найдено в любом месте внутри вашего ответа.Вы можете получить ложный положительный результат.10.0 может быть частью чего-то вроде временной метки, которая не является необычным типом данных, которые можно получить в ответе веб-службы.

Я думаю, что я бы предпочел изменить утверждение содержимого сообщения с помощью утверждения сценария и вставитьчто-то вроде этого:

// This should be adjusted to match your 
// DataSource name and correct column name
def value1 = context.expand( '${DataSource#value}' )

// Now we need to make sure, that no matter if you 
// receive a number in the format 10.0 or 10,0
// we convert it to one and same thing.
value1 = value1.replace(",",".")

// And in case the 10.0 is being returned as 10
// we need to manually add the .0
if (value1.indexOf(".")==-1) {
    value1 = value1.concat(".0")
}

// Now retrieve the value from the response
// You can replace this line, by rightclicking
// inside the script, and choose Get Data
def value2 = context.expand( '${TestStepName#Response#value}' )

assert value1==value2

Теперь вы будете только проверять, имеет ли эта конкретная сущность XML ожидаемое значение.Это значительно снизит ваш риск ложного срабатывания.

Потребуется некоторая корректировка, чтобы она соответствовала вашим потребностям.

Этот способ сравнения может быть нарушен, если незначительныйизменение как изменение в пространствах имен происходит.Вы можете улучшить это, используя XmlSlurper.Но я оставлю это пока.Вернись и спроси об этом, когда доберешься.: -)

...