在SoapUI中,我有一个主机测试用例,它使用“运行测试用例”测试步骤执行另一个外部测试用例(有几个测试步骤)。我需要从主机TC中访问外部TC的响应,因为我需要断言某些值。
我无法传输属性,因为它们是XML格式。我是否可以获得一些关于如何利用Groovy / SoapUI的指示。
答案 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)。
当然,它之所以有效,是因为我将请求响应作为请求测试用例的自定义属性。
我希望我足够清楚