0

我的问题是关于将数据元素(来自 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

我可能对如何构建我的上下文数据有误,但请随时调整!

4

2 回答 2

1

我通过大量搜索设法做到了这一点。首先,我需要在元素前面使用“=”才能获得像 ${=DataSummary[0]} 这样的句柄,这适用于我之前显示的数据的顶层。

但要真正解决问题,我在 Groovy 中创建了一个类,如下所示:

代码:全选 Class DataSummaryResponseDetail { public String name public DataProgress DataProgress = new DataProgress() public Value[] value = new Value[2] } class DataProgress { public Date From public Date To public float Procent } class Value { public String Currency public金额 }

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 = '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'

问题解决了。如果您知道更好的方法,请告诉我。

于 2010-06-11T13:13:33.957 回答
0

我没有使用 SoapUI,但你有没有试过这个:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}

如果 DataSummary 是一个数组,您可以使用访问第一个条目

${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent}

您可以使用 each() 方法对数组进行迭代,因此

${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }}

会给你所有的条目。

于 2010-06-10T14:05:16.723 回答