使用SoapUI / Groovy从"运行测试步骤"中检索响应?

时间:2014-07-14 17:35:33

标签: testing groovy soapui

在SoapUI中,我有一个主机测试用例,它使用“运行测试用例”测试步骤执行另一个外部测试用例(有几个测试步骤)。我需要从主机TC中访问外部TC的响应,因为我需要断言某些值。

我无法传输属性,因为它们是XML格式。我是否可以获得一些关于如何利用Groovy / SoapUI的指示。

3 个答案:

答案 0 :(得分:2)

对于Response,您可以使用以下代码。

testRunner.testCase.getTestStepByName("test step").testRequest.response.responseContent

答案 1 :(得分:0)

在外部TC中创建另一个属性,并在TC的末尾使用Transfer Property步骤将XML节点传输给它。在您的主机TC中,只需像阅读其他任何内容一样阅读该属性。

我也看了看是否可以从Groovy完成。 SoapUI documentation表示您需要引用testsuite / testcase的外部名称:

def tc = testRunner.testCase.testSuite.project.testSuites["external TestSuite"].testCases["external TestCase"]
def ts = tc.testSteps["test step"]

但在那之后我无法找到如何获得响应。

答案 2 :(得分:0)

除了Guest和SiKing答案外,我还针对我遇到的问题提供了一种解决方案: 如果您的步骤不是'request'类型,而是'calltestcase'类型,则不能使用来宾应答。

一个testCase中包含很多请求,其他每次我需要启动一个请求时,其他testCases都调用这些testCases。

我将请求testCases配置为将响应作为自定义属性(称为“ testResponse”)返回,以便可以从其他testCases轻松访问它。

我在以下配置中遇到问题: 我有一个“ calltestcase”步骤,可以给我一个请求结果。 进一步在测试中,我有一个groovy脚本,需要调用此步骤并获取响应值

如果我使用此解决方案:

testRunner.runTestStepByName("test step")

后跟testRunner.testCase.getTestStepByName("test step").testRequest.response.responseContent

我被困住了,因为该类没有testRequest属性。

有效的解决方案是:

testRunner.runTestStepByName("test step")
def response_value = context.expand( '${test step#testResponse#$[\'value\']}' )

另一个解决方案是:

    testRunner.runTestStepByName("test step")
    tStep = testRunner.testCase.getTestStepByName("test step")
    response = tStep.getPropertyValue("testResponse")

然后我从'response'中提取相关值(在我的情况下,这是我必须解析的json)。

当然,它之所以有效,是因为我将请求响应作为请求测试用例的自定义属性。

我希望我足够清楚