代码之家  ›  专栏  ›  技术社区  ›  Nikita Rysin

如何使用上下文获取子节点。在groovy中扩展?

  •  0
  • Nikita Rysin  · 技术社区  · 8 年前

    每个人

    使用SoapUI 5.2.1和Groovy 测试用例有2个测试步骤:

    1. Groovy脚本

    请求内部:

    <soapenv:Envelope ... >
     <soapenv:Header/>
     <soapenv:Body>
      <ban:transactions>
       <session>x</session>
       <type>y</type>
      </ban:transactions>
     </soapenv:Body>
    </soapenv:Envelope ... >
    

    内部脚本:

    def xml = context.expand('${create#request#//ban:transactions}')
    

    此脚本返回:

      <ban:transactions>
       <session>x</session>
       <type>y</type>
      </ban:transactions>
    

    我应该在脚本中更改什么,以便脚本可以返回我:

       <session>x</session>
       <type>y</type>
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Gaurav Khurana    8 年前

    假设您的XML是,我们将提取节点体下的数据

    <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
    <hello>oye1</hello>
    <ok>test</ok>
     <hello>oye2</hello>
    <ok>test2</ok>
    </Body>
    </Envelope>
    

    下面的groovy代码可以从提及其上方节点的xml中提取节点。所以在这里,我们试图提取标记下的节点

    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
    def holder = groovyUtils.getXmlHolder("testStepName#Response")
    def  responseXml=holder.getXmlObject()
    String xmlObj=responseXml.toString()
    String [] responseXmlObj=xmlObj.split('<Body>')[1].split('</Body>')
    log.info responseXmlObj[0]
    

    输出将作为

    Thu Nov 23 12:38:05 GMT+05:30 2017:INFO:
    <hello>oye1</hello>
    <ok>test</ok>
    <hello>oye2</hello>
    <ok>test2</ok>
    

    您需要使用具有响应的步骤的名称更改testStepName