0

私は以下のxmlクエリを持っています:

     <return>
        <code>success</code>
        <message/>
        <deal>
           <checksum>203591</checksum>
           <documentID>21783</documentID>
           <dealStatus>P</dealStatus>
           <financing>
              <financeType>L</financeType>
              <term>32</term>
           </financing>
           <options>
              <disclosureType/>
              <frontBackFlag>P</frontBackFlag>
              <hardSoftFlag>M</hardSoftFlag>
              <optionCode>TO</optionCode>
              <optionDescription>QAfhggddate DOCID  219</optionDescription>
              <optionOrigin>xxx</optionOrigin>
              <optionPrice>
                 <optionPricingType>INVIICE</optionPricingType>
                 <price>111.99</price>
              </optionPrice>
              <optionPrice>
                 <optionPricingType>RETAIL</optionPricingType>
                 <price>2.99</price>
              </optionPrice>
              <optionResidualAmount>3.99</optionResidualAmount>
              <residualTableAmount>0.00</residualTableAmount>
              <residualTableFlag>N</residualTableFlag>
              <satisfiedDate>2012-05-08T00:00:00-06:00</satisfiedDate>
           </options>
        </deal>
     </return>

上記の応答に、仕様に記載されているフィールドのみが含まれていることを確認するチェックポイントを配置する必要があります。たとえば。optionPrice には optionPricingType と price tags のみを含める必要があります。そのため、xpath または xqery を記述して、optionPrice の下のすべてのタグ ラベルを値なしで取得する方法を説明します。

SOAP UI を使用してアサーションを設定しています

4

2 に答える 2

2
  1. SoapUI の「Functional Testing 」ドキュメントによると、スキーマ コンプライアンスに関するアサーションを行うことができます。この機能を使用して、応答が仕様に準拠していることを確認することをお勧めします。

  2. XPath を使用したい場合、または使用しなければならない場合は、いくつかのアイデアがあります。XPath 2.0 が利用可能であると仮定すると、SoapUI では「XPath と XQuery Match アサーションの両方が、この分野の最新の標準のほとんどをサポートする Saxon XPath / XQuery プロセッサを利用する」ためです。リファレンス: XML メッセージの検証

(#2 続き...)既知の要素の存在をテストできます(期待される結果はすべて true になります)。

boolean(/return)
boolean(/return/code)
boolean(/return/deal)
boolean(/return/deal/checksum)

これは、要素の順序付けをテストしないことに注意してください。これは、重要な場合とそうでない場合があります。

未知の要素がないことをテストできます(期待される結果は true になります)。

min(for $elName in //*/local-name() return $elName = ('return','code','message','deal','checksum','documentID','dealStatus','financing','financeType','term','options','disclosureType','frontBackFlag','hardSoftFlag','optionCode','optionDescription','optionOrigin','optionPrice','optionPricingType','price','optionPrice','optionPricingType','price','optionResidualAmount','residualTableAmount','residualTableFlag','satisfiedDate'))

minブール値のリストを使用して、個々のタグ名のテスト結果を渡す上で論理 AND を効果的に実装するハックに注意してください。

XPath アサーションを介して他のさまざまなスポット チェックを行うことができますが、可能であれば、#1 で説明したスキーマ適合機能を使用するようにしてください。

于 2013-10-01T12:37:35.313 に答える
1

次の XPath は からノード名を抽出しますoptionPrice:

/return/deal/options/optionPrice/*/local-name()
于 2013-10-01T09:45:19.103 に答える