SoapUi:将响应值传递给临时属性(缺少非持久目标范围)

时间:2014-07-09 14:55:36

标签: groovy soapui

使用SoapUI Pro 5.0

我知道如何将响应值传递给任何作用域属性(测试套件,测试用例等)。

我的问题是,这样的范围属性:

  1. 必须已存在于目标范围
  2. 在项目配置文件的最后保留。因此,每次运行后,此配置文件都会更改,源代码控制的噩梦是什么。
  3. 我稍后只需要一个或两个步骤进行复杂的验证(使用Script-TestStep)。

    “Property Transfer”-TestStep非常强大,可以从已知来源中提取并转移到已知目标。作为目标,甚至可以从同一个TestCase中选择Script-TestStep。但我没有找到任何提示如何绑定要传输的值 - 比方说 - 目标脚本中的声明变量。

    使用上下文(例如context.getProperties()。put('MY_PROP_NAME',transferValue)会很好但是上下文在“Property Transfer”-TestStep中不可用。我想出的唯一可能是遵循脚本代码在Script-TestStep中:

    def xmlResponse = XMLNamespaceRemover.removeNamespaces(context.expand( '${mySoapTestStep#Response}' ));
    def node = new groovy.util.XmlParser(false,false).parseText(xmlResponse);
    def transferValue = node["Body"]["tag1"]["tag2"].text();
    context.getProperties().put( 'MY_PROP_NAME', transferValue )
    

    如何使用“Property Transfer”TestStep来解决这个问题?

1 个答案:

答案 0 :(得分:1)

在您的脚本中,您可以使用:

def MY_PROP_NAME = context.expand( '${mySoapTestStep#Response//*:Body/*:tag1/*:tag2}' )

或者,您可以使用“属性转移”步骤将值转移到TestCase属性 - 正如您所指出的那样,该属性必须已存在。为了解决你提到的持久化问题,从而搞乱源代码控制,你可以创建一个TearDown脚本:

testRunner.testCase.setPropertyValue("MY_PROP_NAME", "default")
相关问题