如何将默认自定义标头值插入所有 SoapUI 项目



我们在 Windows jumpbox 上安装了SoapUI(开源版)。许多用户可以使用他们的帐户登录,打开soapui,从十几个项目中导入wadl/wsdl并执行测试。

由于IP始终相同,因此我们无法找到谁发送了请求,当发出一些破坏性请求导致大量恢复问题时,这是一个问题(只有授权用户才能访问)。

现在我们要在请求中添加像 user : ${=System.getenv("USERNAME")} 这样的 http 标头。它可以是新的标头属性,甚至是用户代理的一部分。

  • 我们尝试将属性作为用户代理字符串的一部分放入 HTTP 首选项中,但它将参数作为字符串传递
  • 我们还设置了一个全局属性,但默认情况下找不到将其作为 HTTP 调用之一插入的方法。

到目前为止,我们发现的唯一方法是:

  1. 转到每个用户的 Soapui 设置,并逐个为所有请求添加标头。(问题:如果用户稍后导入更多 WSDL/WADL 怎么办)
  2. 向创建的项目添加一个startup脚本,因此默认情况下它会将标头添加到所有内容中(问题:用户可以随时创建新项目 - 请注意,每个 Soapui 实例都是单独的)

SoapUI的专业软件可以使用称为事件的功能轻松满足此要求。

例如,在提交 Web 服务/休息服务调用之前为每个请求添加标头。

但是,您提到正在使用免费版本。前段时间写了一个扩展,它允许我们在 SoapUI 的免费版本中做同样的事情。有一个自述文件解释了如何使用它。基本上,这个扩展实现了SaopUI的API的一些侦听器,同时为最终用户提供了灵活性,当相应的事件发生时,他们应该运行什么代码(以外部文件的形式)。

完成自述文件中提到的说明。

然后你需要做的是编写一个时髦的脚本(已经在下面给出)来实现你的要求,即将标头添加到请求中。这需要在位于特定目录中的特定文件名的文件中完成(详细信息在那里可用)。

在您的情况下,所需的代码(主要是下面的工作示例)应该放入名为 RequestStepBeforeSubmit.groovy 的文件中,以便自动将用户名添加到每个请求的标头中。

即使您在事件发生时将专业软件用于相同的要求SubmitListener.beforeSubmit下面的代码片段也应该有效。

//change the condition if required, should be working for soap/rest types
if (context.getProperty("wsdlRequest")){
   def request = context.getProperty("wsdlRequest").testStep.httpRequest
   def existingHeaders = request.requestHeaders
   def username = System.getProperty('user.name')
   existingHeaders['user'] = [(username)]
   request.requestHeaders = existingHeaders
}

最新更新