【问题标题】:How to use contains with switch in Groovy如何在 Groovy 中使用 contains 和 switch
【发布时间】:2018-05-11 16:21:28
【问题描述】:

使用 SoapUI 5.2.1 和 Groovy。 TestCase 有 2 个测试步骤:

1) SOAP 请求“创建”

2) Groovy 脚本

目标是找出响应中是否包含确切的单词。例如,如果响应包含单词“yes”,则脚本应显示消息。

我通过简单的 if-else & .contains() 实现了它在我考虑 switch 以及我该如何做到这一点之后。

我在这里找到了旧的解决方案 Can switch use String.contains? 但这对我不起作用。我总是陷入默认

所以,我被卡住了。 现在的目标是使用 switch 查找响应中是否有确切的单词,因为将来会有很多不同的情况。

SOAP“创建”有响应,我们对此响应的正文部分感兴趣,因为脚本准确地提取了正文。

<env:Body>
 <data ...>
  <transactions>
   <next_step>yes</next>
   <message>that word</message>
  </transactions>
 </data>
</env:Body>

还有 Groovy 脚本

response = context.expand('$create#Response#://env:Body}')

switch (response)
{
 case ~/.*word.*/:
  log.info "found"
  break
 case ~/.*damn.*/:
  log.info "found that shouldn't be found"
  break
 default:
  log.info "doesn't work"
}

response.toClass()java.lang.String

【问题讨论】:

  • contains 应该比 .*word.* 正则表达式更好。

标签: regex groovy soapui assertions


【解决方案1】:

如果您想检查响应中是否存在预期内容,这是最好的方法之一。

用这种方法

  • 不需要额外的 groovy 脚本测试步骤。
  • 您可以检查不同的字符串作为预期的内容。

步骤如下:

  1. 对于 Soap 请求测试步骤,添加“包含”断言。
  2. 将值作为${#TestCase#EXPECTED_CONTENT} 提供为预期内容。
  3. 在测试用例级别,添加自定义属性EXPECTED_CONTENT 并提供当前测试用例所需的字符串值。同样,您可以在不同的测试中使用不同的字符串作为预期值。

好的部分是您永远不必修改断言,只需更改测试用例级别的属性值。不简单吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 2014-09-10
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多