Отредактируйте переданный объект (используя передачу свойства) в SOAPUI

У меня есть следующие шаги теста:

  • GetDetails
  • TransferObject (передача собственности)
  • Изменить детали

GetDetails выводит объект JSON следующим образом:

{
   "databaseId": 123,
   "databaseName": "Test",
   "address": "ON",
   "details":    {
        "detail_id": 999,
        "userId": 2,
        "date": null,
        "state": "active"
    },
   "itemName": "Bob details",
}

TransferObject передает это details Объект к шагу теста Change Details.

Но теперь я хочу изменить объект (изменить state собственность на non-active) перед передачей в тестовый набор Change Details.

Как я могу это сделать? какие-либо предложения?

1 ответ

Решение

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

Если бы это было достигнуто, я сделал бы это следующим образом (Используя утверждение сценария) .

Есть только два шага

  • Получить детали
  • Изменить детали

Добавить Script Assertion с кодом ниже для шага Get Details:

import groovy.json.*

//Read the response of GetDetails and filter details
def details = new JsonSlurper().parseText(context.response).details

//assert there is details available and not empty
assert details, "Details is empty or null in the response"

//Creating object to build the next step request
def json = new JsonBuilder()

//Building details object for Change
json.details {

  //looping thru each data
    details.each { key, value ->

      //Change state to inactive
      if ('state' == key) value = 'non-active'

      //add the properties inside details
      "$key"("$value")
    }
}

//Create a pretty print sting and this is going to be the next test step's request
def prettyJson = JsonOutput.prettyPrint(json.toString())

//Assign this data to a test step custom property, say REQUEST
context.testCase.setPropertyValue('REQUEST', prettyJson)

На шаге Изменить сведения откройте редактор запросов => иметь ${#TestCase#REQUEST}

Теперь запустите тест, посмотрите, работает ли он так, как вам нужно.

Примечание: упоминается в комментарии inactive, но это упоминается в вопросе non-active - так и осталось в ответе. Я думаю, что в этом случае это не так уж и важно.

Другие вопросы по тегам