Как добавить сложный тип данных из сценария Groovy в ответ в SoapUI

StackOverflow https://stackoverflow.com/questions/3014106

Вопрос

Мой вопрос касается помещения элементов данных (из отличного сценария) в ответ в SoapUI.У меня есть массив данных, которые я хотел бы поместить в свой ответ (в разных тегах/элементах).


Я знаю, что можно поместить такой простой элемент:

Элемент "Мое имя" в ответе XML:

<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} но как мне получить элемент "Процент"

Возможно, я ошибаюсь в том, как создавать контекстные данные, но не стесняйтесь вносить изменения!

Это было полезно?

Решение

Мне удалось это сделать после долгих поисков.Прежде всего, мне нужно было использовать "=" перед элементом, чтобы иметь возможность получить ручку, например, $ {= DataSummary [0]} Это работает на верхнем уровне моих данных, показанных ранее.

Но чтобы действительно решить проблему, я создал в Groovy такой класс:

Код:Выберите все класс DataSummaryResponseDetail {public String name public dataProgress dataProgress = new DataProgress () public value [] value = new Value [2]} класс DataProgress {public Date от public to public float procent} class value {public String currence public int int summ }

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] = new Value () hsrd.value [0] .Amount = 1000 hsrd. TotalValue.Amount = 2000 HSRD.TotalValue.currency = 'USD'

Задача решена.Если вы знаете лучший способ, пожалуйста, дайте мне знать.

Другие советы

Я не работаю с Soapui, но вы пробовали это:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}

Если DataSummary является массивом, вы можете получить доступ к первой записи, используя

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

Вы можете перейти на массив, используя метод каждый (), так

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

доставит вам все записи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top