如何在 REST 调用中省略参数

How to omit parameters in a REST call

对于我的自动化项目,我会有很多测试套件和测试用例,它们有很多组合。为此,我使用 ReadyAPI 进行自动化。

对于每个测试套件,我都输入了必要的参数以便能够在每个测试用例中使用。在 ReadyAPI 中,您可以在创建的网络服务的选项卡 "Projects" 中执行此操作。

现在,并非所有参数都将为特定测试用例填写,而 REST 请求无论如何都会将所有参数作为空字符串发送。

对于这个项目,这是有害的,因为空字符串可能会给出答案,而这不是我要找的。

例如:

测试套件参数:姓名,cbe_number,国家,自治市,邻居,街道,门牌号,po_box

测试用例:按名称搜索公司

对于这个测试用例只有参数'name'会被填入,但是当我发送请求时,所有其他参数也被填入URL。 我的问题是:"How can I, per testcase, omit the other parameters please?"

答案是目前这不可能,但应该有变通办法。虽然它对我不起作用。我已经按照 Kudoed 版主给我的步骤进行操作,我错过了 1 步,但即使在修复了这一步之后,GroovyScript 在调试后仍然给出错误消息。 "wslite.rest.RESTClientException: URL 和方法是必需的 line:26

时出错

这是 GroovyScript:

import wslite.rest.*

def getMap = { key ->
    def props = context.testCase.propertyNames.findAll { it.startsWith(key)}
    def result = [:]
    props.each { result [it.split('_').last()] = context.testCase.getPropertyValue(it) }
    result
}


def headerz = getMap('HEADER')
def queriez = getMap('QUERY')
log.info headerz
log.info queriez
def serviceHost = context.expand('${#Project#SERVICE_HOST_PORT}')
def urlPath = '/agents/organizations'

def client = new RESTClient(serviceHost)
def response = client.get(path: urlPath,
                     accept: ContentType.JSON,
                     query : queriez,
                     headers: headerz
                     )
assert response.statusCode == 200
log.info groovy.json.JsonOutput.prettyPrint(response.text)

我已经在 SmartBear>bin>ext 文件夹中安装了 jar 包 wslite,我创建了一个带有端点的新 Web 服务,我在测试用例级别添加了参数 HEADER_[value] 和 QUERY_[value]与他们的价值观,但我仍然有错误信息..... 在此先感谢您对此的调查。

代码工作正常:

@Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='1.1.3')
import wslite.rest.*

def client = new RESTClient('https://httpbin.org:443')
def response = client.get([
        path: '/get',
        accept: ContentType.JSON,
        query : [aaa:1,bbb:2],
        headers: [ccc:'333',ddd:'444']
    ])
assert response.statusCode == 200
println groovy.json.JsonOutput.prettyPrint(response.text)

但是对于下面的代码

def client = new RESTClient('')

你会得到异常 wslite.rest.RESTClientException: URL and Method are required

所以,这意味着 context.expand('${#Project#SERVICE_HOST_PORT}') 给你一个空值或无效值