2017-11-15 12 views
0

私のSoapUIレスポンスでは、自分自身を繰り返すXML構造を持っています。例:複数のフィールドを同じパスでアサートする

<b:quote-data> 
    <b:quote-data> 
     <b:premium>4.66</b:premium> 
    </b:quote-data> 
    <b:quote-data> 
     <b:premium>5.6</b:premium> 
    </b:quote-data> 
    <b:quote-data> 
     <b:premium>7.58</b:premium> 
    </b:quote-data> 
    </b:quote-data> 

私は現在、最初のプレミアムフィールドの値を表明するアサーションを持っています。私は3つのフィールドすべてにマッチする複数のアサートを持つ方法を理解していません。

// get the xml response 
def response = messageExchange.getResponseContent() 
// parse it 
def xml = new XmlSlurper().parseText(response) 
// find your node by name 
def node = xml.'**'.find { it.name() == 'premium' } 
// assert 
assert node.toString().matches("4.66") 

第1フィールドをスキップして第2フィールドをアセットする方法はありますか?すべての「プレミアム」のノードを取得し、ノードリストを反復する

答えて

2

使用findAll

def nodelist = xml.'**'.findAll{ it.name() == 'premium' } 
    def assertions = [4.66, 5.6, 7.58] 
    def i=0 
    // assert 
    for (node in nodelist) assert node.toString().matches(assertions[i++].toString()) 
+0

が魔法のように動作し、ありがとう – Ross

関連する問題