SOAPUI 选择一个 JDBC 请求值来断言 soap 响应
SOAPUI picking up a JDBC request value to assert against soap response
我在 SOAPUI 中设置了一个测试,我的第一步是 JDBC 查询数据库。此查询 returns 3 个值。我已将所有 3 个值设置为 JDBC 步骤中的属性。
然后我有另一个 属性 传输步骤,最后是 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>
编辑:我的测试用例图片如下。
编辑:包括下面的第 3 步响应。我希望断言 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 0 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>
您可以在 groovy 脚本或脚本断言中从结果集中检索您的值,如下所示:
context.expand( '${NAME of JDBC Request#ResponseAsXml#//TW304_PRODHIST.PRODUCT_1}' )
(我不确定路径,也许你需要填写你的值的完整路径)
我在 SOAPUI 中设置了一个测试,我的第一步是 JDBC 查询数据库。此查询 returns 3 个值。我已将所有 3 个值设置为 JDBC 步骤中的属性。
然后我有另一个 属性 传输步骤,最后是 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>
编辑:我的测试用例图片如下。
编辑:包括下面的第 3 步响应。我希望断言 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 0 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>
您可以在 groovy 脚本或脚本断言中从结果集中检索您的值,如下所示:
context.expand( '${NAME of JDBC Request#ResponseAsXml#//TW304_PRODHIST.PRODUCT_1}' )
(我不确定路径,也许你需要填写你的值的完整路径)