如何在脚本断言中获取特定父元素的子元素



i具有以下XML示例,该示例表明有多次出现节点'productCode',这些'productCode'属于两个节点" prevhospproduct",也属于'prevextrasproducts'。

                <ns2:PrevHospProducts>
                    <ns2:PrevHospProduct>
                       <ns2:ProductCode>D00</ns2:ProductCode>
                       <ns2:ExcessPaid>Yes</ns2:ExcessPaid>
                    </ns2:PrevHospProduct>
                    <ns2:PrevHospProduct>
                       <ns2:ProductCode>900</ns2:ProductCode>
                    </ns2:PrevHospProduct>
                 </ns2:PrevHospProducts>
                 <ns2:PrevExtrasProducts>
                    <ns2:PrevExtraProduct>
                       <ns2:ProductCode>00A</ns2:ProductCode>
                    </ns2:PrevExtraProduct>
                 </ns2:PrevExtrasProducts>

对于此测试,我只对" ProductCode"中的值感兴趣,这些值是" PrevHosproduct"的孩子。我对" prevextrasproducts"下的任何值不感兴趣。

我有以下Groovy Script Assertion in SoapUI在" productCode"中拾取值,但是测试失败了,因为实际结果也从示例响应中返回了" D00"," D00"," 900"one_answers" 00A"。我只希望预期的结果选择" D00"," 900"。

def expectedCodes = ['D00','900'] 
def pxml = new XmlSlurper().parseText(context.response)
def actualCodes = pxml.'**'.findAll{it.name() == 'ProductCode' }*.text() as List
assert expectedCodes.sort() == actualCodes.sort()

首先需要查找父节点,即PrevHospProduct,然后获取ProductCode

这是script assertion

def expectedCodes = ['D00','900'] 
def pxml = new XmlSlurper().parseText(context.response)
def actualCodes = pxml.'**'.findAll{it.name() == 'PrevHospProduct'}*.ProductCode*.text() as List
log.info actualCodes
assert expectedCodes.sort() == actualCodes.sort()

最新更新