在SoapUI中,我使用以下代码从groovy脚本运行测试用例:
def contextMap = new StringToObjectMap(context)
def myTestCase_1 = myTestSuite.getTestCaseByName("TestcaseName")
myTestCase_1.run(contextMap, false)
在调用测试用例中,我以这种方式在groovy脚本中设置了一些上下文属性:context.setProperty(“ProperyName”,”Value”)
在调用的测试用例完成后,在调用此测试用例的groovy脚本的上下文中缺少创建的属性值。 如何将属性值传递给调用另一个测试用例的测试用例?
答案 0 :(得分:0)
如果您希望通过同一context
中的不同properties
分享testCases
,请尝试在testSuite
级别设置属性,而不是使用testSuite
将在此testCases
中为所有testSuite
分享。例如,如果testSuite
有两个testCases
:testCase 1
和testCase 2
,则来自testCase 1
的groovy脚本:
testRunner.testCase.testSuite.setPropertyValue( "sharedVar", "someValue" )
然后使用testCase 2
中另一个groovy脚本使用此属性:
def shared = testRunner.testCase.testSuite.getPropertyValue("sharedVar")
log.info shared
您还可以使用testSuite
testCase 1
中testCase 2
保存的testStep SOAP Request
属性,例如${#TestSuite#sharedVar}
testCase
使用:testCase
基于OP评论的编辑:
似乎OP问题是如何使用groovy脚本从另一个testCase
调用的testCase
获取属性;这是一个可能的解决方法,它包括通过运行结果得到被调用的testCase
,然后得到他的属性:
使用groovy调用另一个import com.eviware.soapui.support.types.StringToObjectMap
def contextMap = new StringToObjectMap(context)
def testCase2 = testRunner.testCase.testSuite.getTestCaseByName("TestCase 2")
// get the result since is running sync
def result = testCase2.run(contextMap, false)
// from the result access the testCase and then the properties setted there
log.info result.getTestCase().getPropertyValue("varSettedOnTestCase2")
的第一个testCase
看起来像:
testCase
在第二个testRunner.testCase.setPropertyValue("varSettedOnTestCase2","test")
中,只需执行您的逻辑并设置将从第一个{{1}}返回的属性:
{{1}}
希望这有帮助,