2016-03-02 1 views
0

Я искал в Google и Stackoverflow, и я не нашел полезной информации и решил отправить вопрос.SOAP UI Assertion Help: Чтобы проверить общий атрибут и общее значение

Я получаю ответ от API в JSON.

{ 
"CouponCode": [{ 
    "id": 56, 
    "name": "BlackFriday" 
}, { 
    "id": 58, 
    "name": "ThanksGiving" 
}, { 
    "id": 62, 
    "name": "New Year" 
}]} 

Мне нужно добавить утверждение, в котором будет указано, что есть всего 3 имени и 3 имени.

Все идентификаторы и имена не пусты. Мы не хотим отправлять пустое значение атрибута.

Я использую SOAP UI с открытым исходным кодом. Укажите точный код или точную ссылку.

Именно утверждение должно

  • Найти общих Идентификаторы и имя, которое будет размер
  • Найти общий Идентификаторы и размер Имя.

Если идентификатор равен 3 и 3 значениям идентификатора, то три. Если JSON приходит, как в этом случае утверждение не удастся.

это

{ 
"CouponCode": [{ 
    "id": 56, 
    "name": "BlackFriday" 
}, { 
    "id": 58, 
    "name": "ThanksGiving" 
}, { 
    "id": "", 
    "name": "New Year" 
}]} 
+0

использованием ответил на вопрос. Я сравниваю как динамическое значение счета, так и работает –

ответ

1

groovy script использует json способ проверки ожидаемых результатов.

Добавить шаг groovy script после этапа rest request в вашем тестовом корпусе.

Sudo код для извлечения того же.

  1. Прочитать json текст. Если вы не хотите использовать фиксированный ответ, прочитайте его с ответа предыдущего шага. Создайте объект.
  2. Убедитесь, что у вас есть ожидаемые значения для id и имени. Вы также можете определить их в пользовательских свойствах тестового случая в случае, если вы не хотите использовать фиксированные значения и каждый раз изменять сценарий.
  3. найти все id счетчик и проверить его с ожидаемым значением и показать сообщение об ошибке в случае отказа.
  4. Как и для шага 3, выполните утверждение для имен.
//for testing using fixed response, you may aslo assign dynamic response. 
def jsonText = ''' 
{ 
"CouponCode": [{ 
    "id": 56, 
    "name": "BlackFriday" 
}, { 
    "id": 58, 
    "name": "ThanksGiving" 
}, { 
    "id": 62, 
    "name": "New Year" 
}]}''' 

def coupons = new groovy.json.JsonSlurper().parseText(jsonText).CouponCode 
//You may also read these values from test case properties 
def expectedIdCount = 3 
def expectedNameCount = 3 
//assert the expected id count with find all coupon ids count of json response 
assert expectedIdCount == coupons.findAll{it.id}.size(), "Coupon id count does not match" 
//assert the expected name count with find all coupon names count of json response 
assert expectedNameCount == coupons.findAll{it.name}.size(), "Coupon name count does not match" 

То же самое может быть достигнуто с помощью script assertion для стадии покоя, а также, что позволит избежать дополнительного заводного шага сценария. Но это может потребовать незначительных изменений в скрипте, как показано ниже.

Как читать ответ json динамически?

Из сценария утверждения
Используйте ниже линии и снимите неподвижную jsonText сверху.
def jsonText = messageExchange.response.responseContent

От шага Groovy сценария // заменить остальное запроса имя шага ниже def jsonText = context.expand('${ReplaceStepName#Response}')

Как читать свойство уровня случае тестирования для ожидаемых результатов вместо закодированных значений в сценарии?

Определить свойство уровня тестового примера для id, скажем EXPECTED_ID_COUNT и обеспечить значение 3, как вы упомянули, а так же, определить для name, а также.

//read in script these properties
def expectedIdCount = context.testCase.getPropertyValue('EXPECTED_ID_COUNT') as Integer

+0

Rao - Что это? Здесь утверждают expectIdCount == coupons.findAll {it.id} .size() –

+0

Добавлен комментарий, пожалуйста, проверьте. Существует также код sudo, упомянутый в начале. – Rao

+0

Я обновляю свой вопрос. я думаю, что я был неясен. Мы очень близки. –

0

Есть несколько возможных solutions. Самый простой способ - использовать утверждение XPath; имейте в виду, что внутри, SoapUI преобразует все в XML, если это возможно.

count(//*:id) 

ожидаемый результат:

3 

Аналогично для name.

+0

Как я могу написать утверждение как ..like count (// *: id) = значение id? –

+0

@BostonStar Я не понимаю ваш вопрос. Утверждение XPath имеет два окна: оператор XPath и ожидаемое значение. – SiKing

+0

Существует другое окно под названием «утверждение скрипта» по сценарию –

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