当前位置: 首页 > 知识库问答 >
问题:

如何使用属性在TestCase之间传递映射

宇文航
2023-03-14

我希望使用Groovy在SOAPUI中执行以下操作:

testRunner.testCase.setPropertyValue( "Map", Map)

我在internet上发现一些帖子建议使用元类groovy属性

context.testCase.metaClass.map = Map
log.info context.testCase.map

但我觉得对我来说还不够。

我希望能够通过以下方式将映射传递到Testcase2:

createMap = testRunner.testCase.testSuite.project.testSuites.testCases["TestCase1"] 
createMap.map

提前致谢

共有1个答案

杜焕
2023-03-14

正如@Siking在注释中正确解释的那样,setPropertyValue方法期望和string用于属性名称和属性值。

请注意,正如@rao所建议的那样,testCase的执行通常应该是独立的,但是从技术上来说,它可以完成您所要求的事情。

因此,对于您的情况,一个可能的解决方案是在第一个testCase中将映射序列化为字符串,以便可以使用setPropertyValue(Strig propertyName,String value)方法进行保存,然后在第二个testCase反序列化它时,必须使用以下代码:

使用inspect()方法序列化映射并将其保存为属性:

def map = ['foo':'foo','bar':'bar', 'baz':'baz']
testRunner.testCase.setPropertyValue('map',map.inspect())

使用eval.me(String exp)反序列化String属性::

// get the first testCase
def testCase1 = testRunner.testCase.testSuite.testCases["TestCase1"] 
// get the property
def mapAsStr = testCase1.getPropertyValue('map')
// deserialize the string as map
def map = Eval.me(mapAsStr)
assert map.foo == 'foo'
assert map.bar == 'bar'
assert map.baz == 'baz'

 类似资料:
  • 我试图在JavaFX中的场景之间传递一个字符串,我已经遵循了一些答案,但似乎它们不起作用,因为字符串在新场景中是空的。 另一个: 正如你所看到的,我尝试使用一个控制程序,并使用一个集合来填充字符串,问题是当我打开新场景时,他的控制程序重置,字符串不再存在,知道为什么或如何解决这个问题吗?

  • 如何从secondactivity.java中的包到fragment_2.java文件中获取值?

  • 订单列表 对于Product.class(string,double,int,int)和Order.class(string,double,int)我有一个单独的类。我还有一个用于productlist的arrayAdapter,它有增加/减少产品数量的按钮。

  • 我得到了这个错误: “变量'a'已赋值,但其值永远不可用”

  • 我已经在TestCase下创建了一些属性列表。例如,看下面的截图。 我试图通过以下groovy脚本teststep删除Testcase_Property属性: 当我重新加载项目时,当我单击测试用例名称时,Testcase_Property属性仍然存在于Custom Properties选项卡中。 谢谢 卡鲁纳加拉·潘迪

  • 我使用的是。我有一个类似的类。我有一个的。 null