Json 在SOAPUI中编辑传输的对象(使用属性传输)

Json 在SOAPUI中编辑传输的对象(使用属性传输),json,api,soapui,web-api-testing,Json,Api,Soapui,Web Api Testing,我有以下测试步骤: 获取详细信息 转让对象(财产转让) 更改详细信息 GetDetails输出一个JSON对象,如下所示: { “数据库ID”:123, “数据库名称”:“测试”, “地址”:“在”, “详情”:{ “详细信息id”:999, “用户ID”:2, “日期”:空, “状态”:“活动” }, “项目名称”:“Bob详细信息”, } transferObject将此详细信息对象传输到更改详细信息测试步骤 但是现在我想修改对象(将状态属性更改为非活动),然后再将其提供给Change

我有以下测试步骤:

  • 获取详细信息
  • 转让对象(财产转让)
  • 更改详细信息
GetDetails输出一个JSON对象,如下所示:

{
“数据库ID”:123,
“数据库名称”:“测试”,
“地址”:“在”,
“详情”:{
“详细信息id”:999,
“用户ID”:2,
“日期”:空,
“状态”:“活动”
},
“项目名称”:“Bob详细信息”,
}
transferObject将此
详细信息
对象传输到更改详细信息测试步骤

但是现在我想修改对象(将
状态
属性更改为
非活动
),然后再将其提供给ChangeDetails测试用例


我该怎么做?有什么建议吗?

我真的不确定如何使用属性转移步骤实现这一点,因为这似乎是数据操作

如果可以实现,我将以下面的方式(使用脚本断言)来实现

只有两个步骤

  • 获取详细信息
  • 更改详细信息
为获取详细信息步骤添加带有以下代码的
脚本断言

import groovy.json*
//阅读GetDetails和filter details的响应
def details=new JsonSlurper().parseText(context.response).details
//断言有可用的详细信息且不为空
断言详细信息,“响应中的详细信息为空或null”
//创建对象以生成下一步请求
def json=new JsonBuilder()
//要更改的建筑详细信息对象
json.details{
//循环通过每个数据
details.each{键,值->
//将状态更改为非活动状态
如果('state'==key)值='non-active'
//在详细信息中添加属性
“$key”(“$value”)
}
}
//创建一个漂亮的打印钉,这将是下一个测试步骤的请求
def prettyJson=JsonOutput.prettyPrint(json.toString())
//将此数据分配给测试步骤自定义属性(如请求)
context.testCase.setPropertyValue('REQUEST',prettyJson)
在更改详细信息步骤中,打开请求编辑器=>have
${{TestCase\request}

现在运行您的测试,看看它是否按照您的需要工作


注:注释
未激活
,但问题中提到的是
未激活
——因此在回复中保持不变。我认为在这种情况下这并不是什么大问题。

您提到的似乎是测试用例的
测试步骤,对吗?此外,似乎有多个
详细信息
,而不是唯一的,因此不需要更多的json片段来解释它。顺便说一句,您可以使用
属性扩展
。@Rao:您说得对!我已经编辑了我的帖子。在单个JSON对象中,
详细信息
属性是唯一的。在哪里可以找到
属性扩展
?因此您希望将上述数据作为
更改详细信息
测试步骤的输入?只改变状态?您能详细说明一下吗?我只需要
details
属性作为
ChangeDetails
测试步骤的输入。但在将其交给
ChangeDetails
之前,我想将
details.state
更改为
inactive
。所以下面应该是输入的
“details”:{“detail\u id”:999,“userId”:2,“date”:null,“state”:“inactive”},
,请查看,看看是否有帮助。谢谢@Rao。成功了!