【问题标题】:How to compare values from response of two different requests in SOAP UI using groovy?如何使用groovy比较SOAP UI中两个不同请求的响应值?
【发布时间】:2016-04-21 07:38:30
【问题描述】:

我正在使用 SOAP UI Pro 进行测试自动化,我对此并不陌生。我正在使用这个工具来实现 Rest API 自动化。 我发送了一个 POST 服务请求并得到了一些响应,例如:唯一 ID、名字、姓氏。

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

我的要求是使用 groovy 比较这两个不同响应中的这两个唯一 ID,并根据结果标记测试通过或失败。请帮忙。

【问题讨论】:

  • 你在使用soap / rest (xml or json) api吗?
  • 我正在使用rest(json) api
  • 为什么需要使用 Groovy?此类断言在 SoapUI 中本地处理。
  • 可能是因为,在从不同步骤获取所需的值后进行验证。
  • @Rao- 不完全是,这可以通过断言来完成。原因是因为如果两个不同的 id 不匹配,我看不到任何可以通过测试的断言。我需要在不匹配时通过测试

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


【解决方案1】:

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

您在问题中评论说您正在使用 Property transfer 步骤,但是您没有说明将结果存储在哪里,因为我想例如您将值存储在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...,然后获取所需的属性。

另一种可能的方法是执行相同的操作,但直接从 testStepresponse 获取属性并执行 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}

希望对你有帮助,

【讨论】:

  • 感谢 albciff,很棒的兄弟!你救了我。是的,我将以前的值保存在测试用例属性文件中。再次感谢。我不知道为什么我的问题是“-1”。
  • @Python_Novice 很高兴为您提供帮助。我没有投反对票,但可能是由于缺少细节(我只是在猜测),尝试用它来更新你的答案,也许然后反对票再次出现撤消行动......如果不是至少在未来也许其他用户会发现您的问题有帮助并点赞:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
相关资源
最近更新 更多