2

SoapUIを使用したXPathテストでアサーション内でワイルドカードを使用する方法はありますか?

私はSoapUIのドキュメントを調べましたが、彼らはあなたがこのようなことをすることができると言っています

<path1>
  <path2>*</path2>
</path1>

[ワイルドカードを許可する]チェックボックスをオンにしました。

私の質問は:日付が2012-08-22で始まると主張したいのですが、分と秒は気にしません。私の表現は2012-08-22*のようなものになるはずですが、機能しません。

4

2 に答える 2

3

あなたがしていることはそれがうまくいくはずのように聞こえます。これは、 http://www.geonames.org/export/web-services.html#timezoneのRESTサービスを使用して作成した簡単な例です。彼らが提供したデモを使用しています

http://api.geonames.org/timezone?lat=47.01&lng=10.2&username=demo の出力は

<geonames>
   <timezone tzversion="tzdata2012c">
      <countryCode>AT</countryCode>
      <countryName>Austria</countryName>
      <lat>47.01</lat>
      <lng>10.2</lng>
      <timezoneId>Europe/Vienna</timezoneId>
      <dstOffset>2.0</dstOffset>
      <gmtOffset>1.0</gmtOffset>
      <rawOffset>1.0</rawOffset>
      <time>2012-07-25 04:39</time>
      <sunrise>2012-07-25 05:50</sunrise>
      <sunset>2012-07-25 21:00</sunset>
   </timezone>
</geonames>

結果に対してxpath一致を実行し、[現在から選択]ボタンを使用すると、次のようになります。

// geonames / timezone / time

2012-07-25 04:39

これをに更新すると

// geonames / timezone / time

2012-07-25 *

これは正常に機能し、残りのリクエストを新しいlatおよびlngで更新する場合、時間をチェックしていないため、アサーションは引き続き通過します。これが役に立たない場合は、あなたの完全な主張を提供してください、そして多分私はもっと助けることができます。

*注:soapリクエストの場合は、名前空間を宣言してから、適切な形式を使用してください

//ns1:message
于 2012-07-25T02:56:59.403 に答える
1

それは一種の苦痛になりますが、これがあなたができることです:

1)アサーションタブを使用してXpathの「ベース」を把握します(すでにここにいるように聞こえます)。この公開サイトを使用してテストしました:http: //graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl

単一のパラメータとして「hawaii」を使用してCornerPointsメソッドを使用しました。

私はこの「ベース」xpathを作成しました:

declare namespace ns1='http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl';
declare namespace SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/';
declare namespace SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/';

/SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:CornerPointsResponse/listLatLonOut

(it will write the declare statements for you if you click declare)
(which you can test out in the assertions window)

2)プロパティステップを作成します

3)プロパティ転送ステップを作成します

4)Groovyスクリプトを作成する

5)プロパティを追加します...私は私のその他と呼びました

6)転送ステップを追加します

* transfer from the CornerPoints - Request 1 --- Response

* paste the Xpath stuff in the box under the 'transfer from'

* Transfer to your property 

(You can test with the little play button)

7)Groovyスクリプトに次のようなものを追加します。

def x = context.expand( '${Properties#misc}' )
def parts = x.tokenize(',')
for (def part in parts)
{
    log.info(part)
    if (part.startsWith("-153"))
        log.info("good")
}

グルーヴィーなステップでは、(部分的な)データを取得するために必要なことは何でもできます。追加したサンプルコードは、CDATAでラップされた長い行からlat / lonsを取得し、一部のデータの開始部分のみをチェックします。単なる例です。

groovyおよびjava文字列メソッドを使用できることを忘れないでください。

http://groovy.codehaus.org/groovy-jdk/java/lang/String.html

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html

その他のGroovyのヒント: http: //www.soapui.org/Scripting-Properties/tips-a-tricks.html

于 2012-07-24T23:09:27.097 に答える