调用的测试用例中缺少上下文

Context missing from called test case

在 SoapUI 中,我是 运行 来自 groovy 脚本的测试用例,代码如下:

def contextMap = new StringToObjectMap(context)
def myTestCase_1 = myTestSuite.getTestCaseByName("TestcaseName")
myTestCase_1.run(contextMap, false)

在被调用的测试用例中,我以这种方式在 groovy 脚本中设置了一些上下文属性:context.setProperty(“ProperyName”,”Value”)

被调用的测试用例完成后,创建的 属性 值在调用此测试用例的 groovy 脚本的上下文中丢失。 如何将 属性 值传回调用另一个测试用例的测试用例?

如果您想在同一个 testSuite 中通过不同的 testCases 共享 properties,请不要使用 context,而是尝试在 testSuite 上设置属性此 testSuite 中的所有 testCases 将共享该级别。例如,如果您有一个 testSuite 和两个 testCasestestCase 1testCase 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 2 中的 testCase 1 例如在 testStep SOAP Request 中使用:${#TestSuite#sharedVar}

根据操作评论编辑:

因为 OP 问题似乎是如何从使用 groovy 脚本从另一个 testCase 调用的 testCase 获取属性;这是一个可能的解决方法,它包括通过 运行 结果获取调用的 testCase 然后获取他的属性:

第一个 testCase 使用 groovy 调用另一个 testCase 看起来像:

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")

希望这对您有所帮助,