在 SOAPUI 中编辑传输的对象(使用 属性 传输)
Edit the transferred Object (using Property transfer) in SOAPUI
我有以下测试步骤:
- 获取详细信息
- transferObject(属性 转移)
- 更改详情
GetDetails 输出一个 JSON 对象如下:
{
"databaseId": 123,
"databaseName": "Test",
"address": "ON",
"details": {
"detail_id": 999,
"userId": 2,
"date": null,
"state": "active"
},
"itemName": "Bob details",
}
transferObject 将此 details
对象传输到 ChangeDetails 测试步骤。
但现在我想修改对象(将 state
属性 更改为 non-active
),然后再将其提供给 ChangeDetails 测试用例.
我该怎么做?有什么建议吗?
我不太确定如何使用 属性 传输步骤实现此目的,因为它似乎是数据操作。
如果可以实现,我会以下面的方式进行(使用脚本断言)。
只有两步
- 获取详细信息
- 更改详情
使用以下代码添加 Script Assertion
获取详细信息步骤:
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)
在 Change Details 步骤中,打开请求编辑器 => 有 ${#TestCase#REQUEST}
现在运行你的测试看看它是否按你的需要工作。
注意:评论中提到inactive
,但问题中提到的是non-active
- 所以在回复中保持不变。我认为在这种情况下这没什么大不了的,我相信。
我有以下测试步骤:
- 获取详细信息
- transferObject(属性 转移)
- 更改详情
GetDetails 输出一个 JSON 对象如下:
{
"databaseId": 123,
"databaseName": "Test",
"address": "ON",
"details": {
"detail_id": 999,
"userId": 2,
"date": null,
"state": "active"
},
"itemName": "Bob details",
}
transferObject 将此 details
对象传输到 ChangeDetails 测试步骤。
但现在我想修改对象(将 state
属性 更改为 non-active
),然后再将其提供给 ChangeDetails 测试用例.
我该怎么做?有什么建议吗?
我不太确定如何使用 属性 传输步骤实现此目的,因为它似乎是数据操作。
如果可以实现,我会以下面的方式进行(使用脚本断言)。
只有两步
- 获取详细信息
- 更改详情
使用以下代码添加 Script Assertion
获取详细信息步骤:
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)
在 Change Details 步骤中,打开请求编辑器 => 有 ${#TestCase#REQUEST}
现在运行你的测试看看它是否按你的需要工作。
注意:评论中提到inactive
,但问题中提到的是non-active
- 所以在回复中保持不变。我认为在这种情况下这没什么大不了的,我相信。