Domanda

La mia domanda è di mettere elementi di dati (da copione Groovy) nella risposta a SoapUI. Ho una serie di dati che vorrei mettere nella mia risposta (in diversi tag / elementi)


Sono consapevole di mettere un elemento semplice come questo:

L'elemento " MyName " nella risposta XML:

<ns:MyName>${MyName}</ns:MyName>

è mappato dallo script Groovy da

context.setProperty("MyName" , "My name" )

Ora il problema:

i miei Xml aspetto di risposta come questo:

   <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:-->

In Groovy Ho costruito array di dati che viene riempito con i dati, ad esempio in questo modo:

context:[DataSummary:[DataSummaryResponseDetail:[Name:My  name, DataProgress:[From:some text, **Procent:some value**, To:some text]]]

Nella risposta sono in grado di vedere l'intero valore del ${DataSummary} ma come faccio a ottenere l'elemento " Procent "

I forse sbaglio su come costruire i miei dati di contesto, ma sentitevi liberi di regolare!

È stato utile?

Soluzione

Sono riuscito a fare questo con un sacco di ricerca. Prima di tutto, avevo bisogno di usare "=" di fronte l'elemento da essere in grado di ottenere una maniglia come $ {= DataSummary [0]} Questo funziona al livello superiore dei miei dati mostrato in precedenza.

Ma per davvero risolvere il problema ho creato una classe in Groovy in questo modo:

Codice: Seleziona tutto     Classe DataSummaryResponseDetail {     nome pubblico String     pubblico DataProgress DataProgress = new DataProgress ()     Valore pubblico [] Valore = Nuovo valore [2]     }     class DataProgress {     pubblica Data Dal     Per pubblico Data     flottante Procent     }     classe di valore {     public String valuta     public int Importo     }

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' 

e poi in xml risposta. Mi riferisco a elementi come questo $ {Hsrd.value [0] .Amount} $ {= Hsrd.totalValue.Amount}

def hsrd = new DataSummaryResponseDetail () hsrd.name = 'qualche nome' hsrd.value [0] = Nuovo valore () hsrd.value [0] .Amount = 1000 hsrd.value [0] = .Currency 'SEK' hsrd.totalValue.Amount = 2000 hsrd.totalValue.Currency = 'USD'

Problema risolto. Se siete a conoscenza di un modo migliore, per favore fatemelo sapere.

Altri suggerimenti

Non avere un lavoro con SoapUI, ma hai provato questo:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}

Se DataSummary è un array, è possibile accedere alla prima voce usando

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

È possibile iterare la matrice utilizzando il metodo each (), in modo da

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

si otterrebbe tutte le voci.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top