如何使用groovy比较SOAP UI中两个不同请求的响应值?

时间:2016-04-21 07:38:31

标签: api groovy automated-tests soapui web-api-testing

我使用SOAP UI Pro进行测试自动化,我是新手。我正在使用此工具进行Rest API自动化。 我发送了一个POST服务请求并获得了一些响应,例如:唯一ID,名字,姓氏。

现在我发送另一个GET请求,输入参数作为名字,来自我之前的POST请求响应的姓氏(使用属性转移步骤),作为回应,我得到了另一个唯一ID(GET的响应)。

我的要求是根据结果使用groovy和mark test pass或fail来比较来自这两个不同响应的这两个唯一id。请帮忙。

1 个答案:

答案 0 :(得分:2)

您可以访问要比较和执行的属性,并在 groovy脚本assert检查所需条件。

您在问题中评论您正在使用属性转移步骤,但是您没有告诉您存储结果的位置,因为我想您例如将值存储在 TestCase 属性:

// you've to use the name of the property you set in the property transfer step
def fn = testRunner.testCase.getPropertyValue('firstName_firstResponse')
def fn2 = testRunner.testCase.getPropertyValue('firstName_secondResponse')
assert fn == fn2, "THE FIRST NAME AREN'T EQUALS"

groovy脚本testStep 上下文中,您有一个testRunner对象,您可以使用该对象访问testCasetestSuite ...然后获取理想的财产。

另一种可能的方法是执行相同操作,但直接从 testStep response获取属性并执行 XPath ,这样做可以使用按照 groovy脚本

def fn = context.expand('${TestStepName_1#response#*://firstName}')
def fn2 = context.expand('${TestStepName_2#response#*://firstName}')
assert fn == fn2, "THE FIRST NAME AREN'T EQUALS"

testRunner类似,context对象已经在 groovy testStep 的上下文中。 context.expand中使用的符号为${Test Step Name#response#XPath}

希望它有所帮助,