Отредактируйте переданный объект (используя передачу свойства) в 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
- так и осталось в ответе. Я думаю, что в этом случае это не так уж и важно.