0

データベースにオブジェクトを作成する soapUI テスト ステップがあります。返された XML 応答には、次のステップで参照する必要があるノードが含まれています。つまり、キー「guid」の後に値が必要です。

<flex.messaging.io.amf.ASObject serialization="custom">
  <unserializable-parents/>
  <map>
    <default>
      <loadFactor>0.75</loadFactor>
      <threshold>48</threshold>
    </default>
    <int>64</int>
    <int>28</int>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <object-array/>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>3</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <boolean>value</boolean>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <flex.messaging.io.amf.ASObject serialization="custom">
      <unserializable-parents/>
      <map>
        <default>
          <loadFactor>0.75</loadFactor>
          <threshold>12</threshold>
        </default>
        <int>16</int>
        <int>5</int>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
        <string>key</string>
        <boolean>value</boolean>
      </map>
      <flex.messaging.io.amf.ASObject>
        <default>
          <inHashCode>false</inHashCode>
          <inToString>false</inToString>
          <namedType>package/class</namedType>
        </default>
      </flex.messaging.io.amf.ASObject>
    </flex.messaging.io.amf.ASObject>
    <string>guid</string>
    <string>818f40db-c217-46ed-a6a2-7c830d894a95</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <string>value</string>
    <string>key</string>
    <null/>
    <string>key</string>
    <null/>
  </map>
  <flex.messaging.io.amf.ASObject>
    <default>
      <inHashCode>false</inHashCode>
      <inToString>false</inToString>
      <namedType>package/class</namedType>
    </default>
  </flex.messaging.io.amf.ASObject>
</flex.messaging.io.amf.ASObject>

このトピックに関するさまざまな問題を見てきましたが、どれもうまくいかないようです。soapUIが期待する構文を正しく理解するためのエラーが原因だと思います。

テスト ステップ 1 が「stepOne」と呼ばれ、「stepTwo」で XML 応答を参照する必要がある場合、次のようになります。

def temp = context.expand( '${stepOne#Response//map[1]/string[27]}' );

...うまくいかない。応答を間違って参照していると思います。次のステップで応答全体を参照する方法に落ち着くことさえあります。次に、それを検索して、必要な値を groovy を使用して見つけることができます。

代わりにプロパティの譲渡を試みる必要がありますか? その場合、ソースはstepOne、レスポンスはResponseAsXml、ターゲットはstepTwoになりますが、xml全体をプロパティに割り当てたくないので、必要なノードだけを割り当てたいと思います(map[1]/文字列[27])。

@Sebi-ええ、私はこれを試しました。このページを数え切れないほど通過しました。応答全体を TestCase レベルの一時プロパティに転送することはできますが、スクリプト ウィンドウでこのプロパティを正しく参照するコードを作成できないようです...これが現在の状態です ' def temp = ${#TestCaseName# tempProperty} ' しかし、これは機能しません。必要なノードが「マップ」の27番目の「文字列」であるとは限らない場合に対処できるように、xml全体を取り込みたいと思います。名前空間の宣言にも問題があります (xml 構造を参照)。これらのメソッドのいずれかに含めた XML に基づいた実際の例を示すことができれば、私は素晴らしいと思いますが、できる限りのことをしました。 soapUI チュートリアル。

4

1 に答える 1

0

はい、代わりにProperty Transfer TestStepを使用してください!

しかし、XML全体をプロパティに割り当てたくはありません。必要なノードだけを割り当てたいと思います

ソース選択ボックスの下に入力ボックスがあります。そこで、転送したいノードの XPath 式を記述できます。

ここで良いチュートリアルを見つけることができます: http://www.soapui.org/Functional-Testing/transfering-property-values.html

于 2012-05-24T10:08:52.297 に答える