如何在具有相同上下文的单独TestSuite中运行TestCase

时间:2019-05-08 14:41:27

标签: soapui

在我的SoapUI项目中,我有两个测试套件-CommonUtils和TestProper。我想从TestProper-> TestA内调用测试用例CommonUtils-> UtilA,但是我需要在这两个测试用例之间共享上下文。 https://imgur.com/a/LdzWIQ0

首先,我尝试将“ Run TestCase”测试提示添加到TestA。但是,尽管我可以将测试用例属性转移到UtilA,但是“运行TestCase”不允许我将上下文转移到UtilA。

然后,我尝试通过将以下Groovy脚本添加到TestA来实现此目的:

def project = context.testCase.testSuite.project
def testCase = project.getTestSuiteByName('CommonUtils').getTestCaseByName('UtilA')
def contextMap = new StringToObjectMap(context)
testCase.run(contextMap, false)

尽管此脚本允许我将上下文的副本转移到UtilA中,但UtilA仍然无法写入上下文。

现在,我不知道该如何完成。如何从TestA内部执行UtilA,并在它们之间共享变量?

1 个答案:

答案 0 :(得分:0)

如果将要传递的变量设置为上下文变量,它应该可以工作。

我在ReadyAPI中完成了此操作,但我希望它在SoapUI中也能正常工作。

我创建了两个TestSuite。两者都持有一个TestCase。

目标TestCase仅包含一个Properties测试步骤,在这里我尝试设置一个变量,然后是一个带有以下代码的Groovy Script测试步骤:

testRunner.testCase.getTestStepByName("Properties").setPropertyValue("varname",context.variable)

在另一个TestSuite / TestCase中,我只有一个Groovy脚本测试步骤,仅包含以下两行代码:

context.variable = "String set in testsuite StartTestCaseInAnotherTestSuite 2"
testRunner.testCase.testSuite.project.getTestSuiteByName("TestSuite Name").getTestCaseByName("TestCase Name").run(new com.eviware.soapui.support.types.StringToObjectMap(context),false)
// Remember to adjust the names of TestSuite and TestCase to suit your needs.

现在,当我运行后者时,我将context.variable设置为一个值,并且在运行第二个测试用例时,将在Properties测试步骤中设置该上下文变量。