我在SOAPUI中设置了一个测试,我的第一步是对db的JDBC查询。此查询返回3个值。我在JDBC步骤中将所有3个值都设置为属性。
然后,我有另一个步骤进行Property Transfer,最后是SOAP请求步骤。
我将两个JDBC属性传递给SOAP请求步骤。这一切都已成功设置。我希望做的最后一步是针对SOAP响应中的特定值声明最终的JDBC属性。
根据下面的groovy断言,我有这个断言工作到目前为止,但是对于硬编码值('9Jg')。我想阻止这个值被硬编码,我希望从JDBC属性中提取值。
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( messageExchange.responseContent )
def pxml = new XmlSlurper().parseText(context.response)
def expectedCodes = ['9Jg']
def actualCodes = pxml.'**'.findAll{it.name() == 'CurrHospProductCode'}*.text() as List
assert expectedCodes.sort() == actualCodes.sort()
编辑:基于OP的评论
<?xml version="1.0" encoding="UTF-8"?>
<Results>
<ResultSet fetchSize="64">
<Row rowNumber="1">
<TW606_POLRELATION.HPOLICY>H00000032</TW606_POLRELATION.HPOLICY>
<TW606_POLRELATION.CUSTOMER>26485588</TW606_POLRELATION.CUSTOMER>
<TW304_PRODHIST.PRODUCT_1>FJ0</TW304_PRODHIST.PRODUCT_1>
</Row>
</ResultSet>
</Results>
编辑:我的测试用例的图片如下。
编辑:包括以下第三步回复。我希望在CurrExtrasProductCode中断言值
<ns0:ServiceBody>
<ns1:GetTreatmentTypesResponse xmlns:ns1="http://www./v1-0">
<ns1:ProductAndTreatmentTypes>
<ns2:ProductHistory xmlns:ns2="http://www./v1-0">
<ns2:CurrHospProductCode>9J0</ns2:CurrHospProductCode>
<ns2:CurrHospProductDesc>Saver $500 excess</ns2:CurrHospProductDesc>
<ns2:CurrHospProductStartDate>2016-06-14</ns2:CurrHospProductStartDate>
<ns2:CurrHospProductExcessPaid>No</ns2:CurrHospProductExcessPaid>
<ns2:PrevHospProducts/>
<ns2:CurrExtrasProductCode>08S</ns2:CurrExtrasProductCode>
<ns2:CurrExtrasProductDesc>Saver Flexi Extras</ns2:CurrExtrasProductDesc>
<ns2:CurrExtrasProductStartDate>2016-06-14</ns2:CurrExtrasProductStartDate>
<ns2:CurrExtrasProductlengContCover>15</ns2:CurrExtrasProductlengContCover>
<ns2:PrevExtrasProducts/>
<ns2:PolicyStartDate>2016-06-14</ns2:PolicyStartDate>
<ns2:CurrAddOnProducts/>
</ns2:ProductHistory>
答案 0 :(得分:1)
您可以在groovy脚本或脚本断言中从resultSet中检索您的值,如下所示:
context.expand( '${NAME of JDBC Request#ResponseAsXml#//TW304_PRODHIST.PRODUCT_1}' )
(我不确定路径,也许你需要填写你的价值的完整路径)