كيفية إضافة نوع البيانات المعقدة من البرنامج النصي الرائع إلى الاستجابة في Soapui

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

سؤال

سؤالي حول وضع عناصر البيانات (من البرنامج النصي الرائع) في الرد في Soapui. لدي مجموعة من البيانات التي أود وضعها في ردي (بعلامات/عناصر مختلفة)


أنا على دراية بوضع عنصر بسيط مثل هذا:

العنصر "اسمي"في استجابة XML:

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

تم تعيينه من السيناريو الرائع بواسطة

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]} هذا يعمل على المستوى العلوي من بياناتي الموضحة من قبل.

ولكن لحل المشكلة حقًا ، قمت بإنشاء فصل في مثل هذا:

الرمز: حدد جميع dataSummaryResponsSeDetail {اسم السلسلة العامة dataProgress dataProgress = جديد dataProgress () القيمة العامة [] القيمة = القيمة الجديدة [2]} dataProgress {التاريخ العام من التاريخ العام إلى procent procent} فئة الفئة int كمية}

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.value [0] .currency = 'sek' 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