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

时间:2015-01-26 22:27:45

标签: groovy soapui

在SoapUI中,我使用以下代码从groovy脚本运行测试用例:

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

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

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

1 个答案:

答案 0 :(得分:0)

如果您希望通过同一context中的不同properties分享testCases,请尝试在testSuite级别设置属性,而不是使用testSuite将在此testCases中为所有testSuite分享。例如,如果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 1testCase 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}}

希望这有帮助,