【问题标题】:How do I change the value of a header for each request inside a datasource loop?如何更改数据源循环中每个请求的标头值?
【发布时间】:2017-03-28 00:50:48
【问题描述】:

我有一个名为 RequestID 的标头,它的值是我在下面的 groovy 脚本中生成的 UUID:

import static java.util.UUID.randomUUID
import com.eviware.soapui.support.types.StringToStringMap  

def uuid = randomUUID() as String
def headers = new StringToStringMap()

headers.put("RequestID", uuid)
testRunner.testCase.getTestStepByName("Get Username").testRequest.setRequestHeaders(headers)

我还有一个名为“获取用户名”的 REST 请求,该请求通过数据源循环多次调用。我的 groovy 脚本似乎只为整个循环生成一个 UUID,而不是为每次点击生成一个新的 UUID。我的脚本中是否遗漏了某些内容,或者步骤的顺序有误?我还在我的数据源步骤中使用了一个名为 SSN 的网格来将数据输入到请求中。

这是我在 SOAPUI 中的步骤顺序:

  • 社会保障号
  • Groovy 脚本
  • 获取用户名,
  • 数据源循环(数据源步骤:SSN,目标步骤:获取用户名)

基本上每次发送新请求时,都应该有一个新的requestid。如果这有意义的话。

【问题讨论】:

  • 您的脚本看起来不错。似乎不是问题。它将在每个循环中不断生成新的 uuid。不是吗?
  • @Rao,我不完全确定。有没有办法减慢soapui中测试用例的执行速度以进行检查?因为根据一些日志记录,它看起来在数据源循环期间使用相同的 uuid
  • 如果你使用的是readyapi1.9,有调试功能。

标签: groovy soapui ready-api


【解决方案1】:

当测试到达数据源循环时,它会从数据源获取新数据并执行目标测试步骤(在您的情况下 - 获取用户名)。所以它只执行一次 Groovy 脚本。

将 DataSource Loop 中的 Target 测试步骤更改为 Groovy Script 测试步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2014-07-16
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    相关资源
    最近更新 更多