0

xpath アサーションを使用して確認したいエラー メッセージが返されました。問題は、iongt:faultstring の残りの情報が一定のままである間に、トランザクション ID が変更される (システムによって生成される) ことです。

このアサーションを行う簡単な方法はありますか?

<iongt:retrieveSystemInformationFault xmlns:iongt="http://www.testing.com/xml/TestingIONGT">
      <iongt:faultcode>TestError012</iongt:faultcode>
      <iongt:faultstring>Transaction Id: 8781991797:
Testing error message here</iongt:faultstring>
    </iongt:retrieveCustomerInformationFault>

「*」の使用は機能しません。

<iongt:retrieveSystemInformationFault xmlns:iongt="http://www.testing.com/xml/TestingIONGT">
      <iongt:faultcode>TestError012</iongt:faultcode>
      <iongt:faultstring>Transaction Id: *:
Testing error message here</iongt:faultstring>
    </iongt:retrieveCustomerInformationFault>
4

1 に答える 1

1

SoapUI XPath Match Expected Result ワイルドカードは、テキスト ノードの一部ではなく、テキスト ノード全体に一致する必要があると思われます。

もちろん、期待される結果のテキスト コンテンツ全体にアスタリスクを使用することで、精度の低いレベルでアサートすることもできます (これが機能すると述べたように)。

<iongt:faultstring>*</iongt:faultstring>

ただし、より正確にする必要がある場合は、次のように XPath 式を変更することもできます。ただの代わりに

//iongt:retrieveSystemInformationFault

たとえば、次の XPath 式を使用できます。

//iongt:retrieveSystemInformationFault/iongt:faultcode

期待される結果

<iongt:faultcode xmlns:iongt="http://www.testing.com/xml/TestingIONGT">TestError012</iongt:faultcode>

および XPath 式を使用した別のアサーション

//iongt:retrieveSystemInformationFault/iongt:faultstring[starts-with(., 'Transaction Id: ') and
   contains(., 'Testing error message here')]

XPath contains()1.0 にはends-with(). 本当に正確にする必要がある場合は、 だけではなく、とを使用contains()する代わりに同等のものを使用できますが、そのレベルの努力が必要であるとは思えません。ends-with()string-length()substring()

上記の期待される結果は、

<iongt:faultstring xmlns:iongt="http://www.testing.com/xml/TestingIONGT">*</iongt:faultstring>

または、2 つを 1 つのアサートに結合することもできます...その例を見たい場合はお知らせください。

于 2012-10-12T14:13:59.247 に答える