如何在SOAP UI中的Groovy脚本之间传递二维列表/数组



问题语句:我们需要一种将二维列表(或数组(从一个groovy脚本传递到其他脚本的方法(以其他脚本中的多个db2表宣称值]。p>一些背景:步骤1:基于我们的输入XML有效载荷,我们在二维列表中捕获节点(和子元素(的列表[] [] []。[完毕]步骤2:现在,我们想使用此列表中每个列表中的值对DB2表中的值进行断言[也完成了,但是将Step1和Step2都保持在同一groovy脚本中]。

我们想要的是能够通过步骤2中的步骤1传递2二维列表。特别重要的是,因为我们有多个表,并且我们不想在一个大型groovy脚本中添加所有表步骤,也不想在每个db2 validataion脚本中复制step1代码。

我们阅读了有关从测试案例级别上列表设置每个元素值的内容,然后重建阵列,但是由于(变化&(列表元素的巨大尺寸(成千上万个(,我们犹豫要使用该方法。问题是:有什么干净的方法可以实现这一目标吗?

谢谢!

您知道早期解决方案的限制,如果运行测试用例,则只能使用该解决方案(在Groovy脚本之间共享对象(,并且如果单个步骤为运行。

在这里,我想提供一种方法,该方法通过使用Groovy的元编程来实现。

在脚本1 中,具有以下代码:

import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase
WsdlTestCase.metaClass.myList = [1,2,3,4,5]

在脚本2 中,具有以下代码:

log.info "From script 2: ${context.testCase.myList}"
assert [1,2,3,4,5] == context.testCase.myList

如果运行各个步骤,以上甚至有效。希望这很有帮助。

编辑:开始理解,用户需要反复更新列表,并且使用MetaClass用户无法更新列表。这是替代方案:

import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase
WsdlTestCase.metaClass.myObject = new Expando(myList: [1,2,3,4,5])
log.info "list initialized: ${context.testCase.myObject.myList}"
WsdlTestCase.metaClass.myObject = new Expando(myList: [1,2,3,4,5,6,7])
log.info "list updated: ${context.testCase.myObject.myList}"

您可以使用context

这是真正的工作Groovy Script步骤。

step1:

def array = ['Kyiv', 'Boryspil', 'Kharkiv', "L'Viv", "Odesa"]
context.setProperty('cities', array)
log.info( 'script1: '+array )

step2:

def array = context.getProperty('cities')
log.info( 'script2: '+array )
assert array.size()>0

注意:

如果您只跑一步,那么绝对会有 独立背景。

但是,如果您运行了整个测试柜,那么将共享上下文 对于整个测试柜。

您可以在测试案例窗口中使用Run from here上下文菜单从确切的步骤运行。

最新更新