我的问题是将数据元素(来自groovy脚本)放在SoapUI的响应中。 我有一系列数据,我想把它放在我的回复中(在不同的标签/元素中)
我知道要放一个这样的简单元素:
Xml响应中的元素“ MyName ”:
<ns:MyName>${MyName}</ns:MyName>
通过
从Groovy脚本映射context.setProperty("MyName" , "My name" )
现在出现问题:
我的Xml响应如下所示:
<soapenv:Body>
<ns:GetDataSummaryResponse>
<!--Optional:-->
<ns:GetDataSummaryResult>
<ns:DataSummary>
<!--Zero or more repetitions:-->
<ns:DataSummaryResponseDetail>
<ns:Name>?</ns:Name>
<!--Optional:-->
<ns:DataProgress>
<!--Optional:-->
<From>?</From>
<!--Optional:-->
<Procent>?</Procent>
<!--Optional:-->
<To>?</To>
<!--Optional:-->
在Groovy中我构建了数据数组,其中填充了数据,例如:
context:[DataSummary:[DataSummaryResponseDetail:[Name:My name, DataProgress:[From:some text, **Procent:some value**, To:some text]]]
在回复中,我能够看到${DataSummary}
的全部价值,但我如何获得元素“ Procent ”
我对如何构建我的上下文数据可能有误,但可以自由调整!
答案 0 :(得分:1)
我设法做了很多搜索。 首先,我需要在元素前面使用“=”才能获得类似的句柄 $ {= DataSummary [0]} 这适用于我之前显示的数据的顶层。
但是要真正解决问题,我在Groovy中创建了一个类,如下所示:
代码:全选 Class DataSummaryResponseDetail { public String name public DataProgress DataProgress = new DataProgress() public Value [] value = new Value [2] } class DataProgress { 公共日期来自 公共日期 公共浮动Procent } class Value { 公共字符串货币 public int Amount }
def hsrd = new DataSummaryResponseDetail()
hsrd.name = 'Some name'
hsrd.value[0]=new Value()
hsrd.value[0].Amount = 1000
hsrd.value[0].Currency = 'SEK'
hsrd.totalValue.Amount = 2000
hsrd.totalValue.Currency = 'USD'
然后在响应xml中。我指的是这样的元素 $ {hsrd.value [0] .Amount} $ {= hsrd.totalValue.Amount}
def hsrd = new DataSummaryResponseDetail() hsrd.name ='某个名字' hsrd.value [0] =新值() hsrd.value [0] .Amount = 1000 hsrd.value [0] .Currency ='SEK' hsrd.totalValue.Amount = 2000 hsrd.totalValue.Currency ='USD'
问题解决了。如果您知道更好的方法,请告诉我。
答案 1 :(得分:0)
我没有使用SoapUI,但你试过这个:
${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}
如果DataSummary是一个数组,您可以使用
访问第一个条目${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent}
您可以使用方法each()迭代数组,所以
${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }}
会给你所有参赛作品。