使用SoapUI Pro 5.0
我知道如何将响应值传递给任何作用域属性(测试套件,测试用例等)。
我的问题是,这样的范围属性:
我稍后只需要一个或两个步骤进行复杂的验证(使用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来解决这个问题?
答案 0 :(得分:1)
在您的脚本中,您可以使用:
def MY_PROP_NAME = context.expand( '${mySoapTestStep#Response//*:Body/*:tag1/*:tag2}' )
或者,您可以使用“属性转移”步骤将值转移到TestCase属性 - 正如您所指出的那样,该属性必须已存在。为了解决你提到的持久化问题,从而搞乱源代码控制,你可以创建一个TearDown脚本:
testRunner.testCase.setPropertyValue("MY_PROP_NAME", "default")