【发布时间】:2017-09-28 07:17:39
【问题描述】:
我在这方面花了几个小时,在阅读了一些文章后,我不确定我是否采取了正确的方法。更多关于这个问题的最后。
在我的previous post 中发现我不应该使用数组。我的最新问题与此相反,因为我想将我的 jdbc 响应中的数据抓取到一个数组中,以针对也在数组中的 SOAP 响应进行断言。
我的 SOAP 响应以数组形式的实际(已编辑)结果工作正常,但 JDBC 响应仅获取第一个值,因此断言失败。
这是我的 JDBC 响应中的一个片段:
<Results>
<ResultSet fetchSize="64">
<Row rowNumber="1">
<TW070_VALIDATION.CODE>APP</TW070_VALIDATION.CODE>
<TW070_VALIDATION.VALID_DATA/>
</Row>
<Row rowNumber="2">
<TW070_VALIDATION.CODE>CHI</TW070_VALIDATION.CODE>
<TW070_VALIDATION.VALID_DATA>1</TW070_VALIDATION.VALID_DATA>
</Row>
<Row rowNumber="3">
<TW070_VALIDATION.CODE>DEN</TW070_VALIDATION.CODE>
<TW070_VALIDATION.VALID_DATA>1</TW070_VALIDATION.VALID_DATA>
</Row>
</ResultSet>
</Results>
我想为返回的每一行获取这两个值。因此,在此示例中,我希望获取以下内容以用于我的预期结果:
APP= ,CHI=1,DEN=1
我的断言脚本目前如下所示:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def pxml = new XmlSlurper().parseText(context.response)
//grab the expected result from jdbc response
def expectedCodes = context.expand( '${JDBC Request for expected results#ResponseAsXml#//*:TW070_VALIDATION.CODE}' )
//grab the actual result from the SOAP response
def actualCodes = pxml.'**'.findAll{it.name() == 'ReportAssessment'}.collectEntries{[(it.ReportAssessmentGroup.text()):it.Ranking.text()]}
log.info expectedCodes
log.info actualCodes
assert expectedCodes == actualCodes
EDIT2:从我的 SOAP 响应中添加一个示例(第 4 步)
<ns2:ReportAssessment>
<ns2:ReportAssessmentGroup>APP</ns2:ReportAssessmentGroup>
<ns2:Ranking>0</ns2:Ranking>
<ns2:ReportAssessmentGroupDescription>APPLIANCES</ns2:ReportAssessmentGroupDescription>
</ns2:ReportAssessment>
<ns2:ReportAssessment>
<ns2:ReportAssessmentGroup>CHI</ns2:ReportAssessmentGroup>
<ns2:Ranking>1</ns2:Ranking>
<ns2:ReportAssessmentGroupDescription>CHIROPRACTIC</ns2:ReportAssessmentGroupDescription>
</ns2:ReportAssessment>
<ns2:ReportAssessment>
<ns2:ReportAssessmentGroup>DEN</ns2:ReportAssessmentGroup>
<ns2:Ranking>1</ns2:Ranking>
<ns2:ReportAssessmentGroupDescription>DENTAL</ns2:ReportAssessmentGroupDescription>
我一直在阅读有关循环方法的文章,因此不确定是否可以在 groovy 脚本中解决这个问题,或者我是否需要不同的测试结构来包含循环。
【问题讨论】:
-
Matt,你可以看看下面的解决方案。