当前位置: 首页 > 知识库问答 >
问题:

使用 groovy 从请求 URL soapui 获取查询参数

杜凯
2023-03-14

我只使用了SOAP UI来测试WSDL/URL,但在这个范围内没有。我需要从SOAPUI获取请求url查询参数,并使用它们使用groovy脚本测试一些东西。

假设我有一个GetCustomers请求url,如下所示

`http://myendpoint.com/customers?Id=111&ModeName=abc&DeltaId=023423`

我需要URL < code > Id = 111 < code > ModeName = ABC < code > DeltaId = 023423 中的以下内容

我在SOAP UI中创建了一个groovy脚本,它在下面的层次结构中

在我尝试过的时髦脚本中

< code > def Id = test runner . test case . getpropertyvalue(" Id ")

但是当我打印<code>id</code>时,我得到的是空的。我不确定要访问这些查询参数还需要做什么其他配置。有没有一种方法可以获取这些查询参数并直接在我的groovy脚本中访问它们?

共有1个答案

尚俊楠
2023-03-14

假设您的testStep请求被调用为<code>GetCustomers</code>,那么您可以使用以下Groovy代码来获取testSteps,然后获取endpoint值为<code<String>的属性:

def ts = context.testCase.getTestStepByName('GetCustomers')
def endpoint =ts.getPropertyValue('Endpoint')
log.info endpoint // prints http://myendpoint.com/customers?Id=111&ModeName=abc&DeltaId=023423

然后,您可以使用 java.net.URL 类解析endpoint,并使用 getQuery() 方法提取查询参数。然后拆分

import java.net.*

def ts = context.testCase.getTestStepByName('GetCustomers')
def endpoint =ts.getPropertyValue('Endpoint')
// parse the endpoint as url
def url = new URL(endpoint)
// get all query params as list
def queryParams = url.query?.split('&') // safe operator for urls without query params
// transform the params list to a Map spliting 
// each query param
def mapParams = queryParams.collectEntries { param -> param.split('=').collect { URLDecoder.decode(it) }}
// assert the expected values
assert mapParams['Id'] == '111'
assert mapParams['ModeName']== 'abc'
assert mapParams['DeltaId']=='023423'

还有一个选项不使用<code>URL</code>类;这仅仅是使用<code>拆分<code>URL</code>获取查询参数(如URL.getQuery()所做):

def ts = context.testCase.getTestStepByName('GetCustomers')
def endpoint =ts.getPropertyValue('Endpoint')

// ? it's a special regex... so escape it
def queryParams = endpoint.split('\\?')[1].split('&')
// transform the params list to a Map spliting 
// each query param
def mapParams = queryParams.collectEntries { param -> param.split('=').collect { it }}
// assert the expected values
assert mapParams['Id'] == '111'
assert mapParams['ModeName']== 'abc'
assert mapParams['DeltaId']=='023423'
 类似资料:
  • 我想使用spring的RestTemplate进行REST调用,URL包含一些可选的查询参数。URL看起来类似于 url=example.com/param1={param1}&param2={param2} 我使用exchange方法将参数作为映射传递给restTemplate RESTTemplate.Exchange(url、方法、负载、String.Class、params) 最后的URL

  • 客户端可能会发送多个查询参数,如: 我需要获取所有查询参数并将其提取为字符串

  • 问题内容: 我可以使用Groovy脚本获取响应xml。我需要获取请求XML,因为我需要在soap ui测试中添加“断言脚本”。 我正在使用以下代码来获取响应xml 但是我不确定如何获取SOAPUI的请求xml。谁能帮我获得SOPAUI的请求xml吗? 问题答案: 要以字符串形式获取请求内容,可以使用 有关SoapUI API的更多信息,请访问http://www.soapui.org/apidoc

  • 当我将参数嵌入到下面的路径中时,我可以成功地传递参数 我应该使用‘参数’tabe只有当我做POST方法?我知道向JMeter传递参数是一个简单的问题,但我不能解决我的问题。

  • 我有一个查询字符串,可以是: 编辑:参数值的长度可以大于2 有人知道在String.ReplaceAll([regex],[replace])中使用什么好的regex表达式吗?

  • 主要内容:通过 HttpServletRequest 获取请求参数,通过形参获取请求参数,使用 @RequestParam 注解获取,通过实体类对象获取(推荐),解决获取请求参数的乱码问题Spring MVC 提供了多种获取请求参数的方式: 通过 HttpServletRequest 获取请求参数 通过控制器方法的形参获取请求参数 使用 @RequestParam 注解获取请求参数 通过实体类对象获取请求参数(推荐) 下面我们就对这些获取请求参数的方式一一进行介绍。 通过 HttpServlet