Использование Groovy в soapUI для извлечения поля JSON - PullRequest
0 голосов
/ 25 февраля 2019

Я использую soapui с groovy для тестирования API автоматизации и отправляю запрос REST, вот мой ответ:

 {`enter code here`
     "firstname": "aaa",
     "lastname": "bbb",
     "address": "test",
     "city": "city",
     "country": "country",
     "default": "false",
     "id": "326"
  }, {
     "firstname": "ddd",
     "lastname": "eee",
     "address": "test",
     "city": "city",
     "country": "country",
     "default": "True",
     "id": "67"
  }, {
     "firstname": "hhh",
     "lastname": "yyy",
     "address": "test",
     "city": "city",
     "country": "country",
     "default": "false",
     "id": "345"
  }, {
     "firstname": "ooo",
     "lastname": "hh",
     "address": "test",
     "city": "city",
     "country": "country",
     "default": "false",
     "id": "3211"
  },

Я хочу восстановить идентификатор пользователя, который по умолчанию имеет значение "true"

1 Ответ

0 голосов
/ 28 февраля 2019

Во-первых, отправленный вами ответ не является действительным json.Должно быть что-то вроде этого:

[
  {
    "firstname": "aaa",
    "lastname": "bbb",
    "address": "test",
    "city": "city",
    "country": "country",
    "default": "false",
    "id": "326"
  },
  {
    "firstname": "ddd",
    "lastname": "eee",
    "address": "test",
    "city": "city",
    "country": "country",
    "default": "True",
    "id": "67"
  },
  {
    "firstname": "hhh",
    "lastname": "yyy",
    "address": "test",
    "city": "city",
    "country": "country",
    "default": "false",
    "id": "345"
  },
  {
    "firstname": "ooo",
    "lastname": "hh",
    "address": "test",
    "city": "city",
    "country": "country",
    "default": "false",
    "id": "3211"
  }
]

Если вас просто интересует заводной скрипт, вот он:

package json

import com.eviware.soapui.support.XmlHolder
import groovy.json.*


//define the location of the JSON response
def response = context.expand('${post_json_data#Response}').toString()

//parse response as json
def json_response = new JsonSlurper().parseText(response)

//iterate on the list with if condition
json_response.eachWithIndex {
    item, index ->
        if(item.default == 'True') {
            log.info "index: ${index}"
            log.info "Item default value: ${item.default}"
            log.info "Item id value : ${item.id}"
        }
}
...