代码之家  ›  专栏  ›  技术社区  ›  Ross

如何在SoapUI MockService中返回动态响应

  •  6
  • Ross  · 技术社区  · 16 年前

    我是SoapUI新手,刚刚配置了一个非常简单的MockService。是否可以操纵响应,以便为特定请求动态构建响应的元素?

    请求:

    <record>
      <identifier>ID1</identifier>
    </record>
    

    答复:

    <response>
      <child1>child 1</child1>
    </response>
    

    场景2:

    请求:

    <record>
      <identifier>ID2</identifier>
    </record>
    

    答复:

    <response>
      <child2>child 2</child2>
    </response>
    

    <response>
      ${dynElement}
    </response>
    

    Groovy脚本:

    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
    def holder = groovyUtils.getXmlHolder(mockRequest.requestContent)
    def reqRef = String.valueOf(holder.getNodeValue("//identifier"))
    
    def child1Text = "<child1>child 1</child1>"
    def child2Text = "<child2>child 2</child2>"
    
    if (reqRef == "ID1") {
      context.setProperty("dynElement", child1Text)
    } else if (reqRef == "ID2") {
      context.setProperty("dynElement", child2Text)
    }
    
    2 回复  |  直到 15 年前
        1
  •  2
  •   Chris Thornton    16 年前

    我用“固定响应”和xpath查询来实现。为此,您将在mockservice中设置一系列调度处理程序,以将需求与响应相匹配。假设您有Request1,Request2,Response1,Response2。使用“Query Match”分派方法来匹配XPATH表达式。在匹配时,返回所需的响应。i、 e.如果在xpath中找到ID1,则返回固定响应1。

    另外,PRO版本在XPATH方面做得很好,所以您不必手工编写。i、 它可以查看一个响应,点击您想要触发的东西(在您的例子中是ID1),然后为您构建XPATH表达式。我申请了职业执照,就是基于这个。正在等待预算。。。

    在我看来,入门要比搞懂groovy容易得多。

    克里斯

        2
  •  3
  •   Community Mohan Dere    9 年前

    也可以使用XmlSlurper代替xpath。

    def req = new XmlSlurper().parseText(mockRequest.requestContent)
    def reqRef = req.record.identifier
    

    this question's