【问题标题】:SOAPUI picking up a JDBC request value to assert against soap responseSOAPUI 获取 JDBC 请求值以针对肥皂响应进行断言
【发布时间】:2017-09-14 07:46:08
【问题描述】:

我在 SOAPUI 中设置了一个测试,我的第一步是对 db 进行 JDBC 查询。此查询返回 3 个值。我已在 JDBC 步骤中将所有 3 个值设置为属性。

然后我还有一个属性转移步骤,最后是 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>

【问题讨论】:

  • 那么你想要第三个 JDBC 值作为期望值吗?
  • 没错。而不是我的断言声明 def 'expectedCodes = ['9Jg']' id 像我的断言一样从我的 JDBC 步骤中查找剩余值。
  • 您介意提供示例响应吗?
  • 当然。假设您的意思是来自 JDBC 调用的响应。
    H0000003226485588FJ0
  • 对不起。在 cmets 中将格式设置为代码。

标签: jdbc groovy soapui


【解决方案1】:

您可以在 groovy 脚本或脚本断言中从 resultSet 中检索您的值,如下所示:

context.expand( '${NAME of JDBC Request#ResponseAsXml#//TW304_PRODHIST.PRODUCT_1}' )

(我不确定路径,也许你需要填写完整路径到你的值)

【讨论】:

  • 这行得通。我的代码如下所示:def expectedCodes = context.expand( '${JDBC Request for expected results#ResponseAsXml#//*:TW070_VALIDATION.CODE}' )
猜你喜欢
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多