对于我的自动化项目,我将有很多测试套件和测试用例,它们具有很多组合。为此,我使用ReadyAPI进行自动化。
对于每个测试套件,我都输入了必要的参数,以便可以在每个测试用例中使用。在ReadyAPI中,您可以在创建的Web服务上的“项目”标签中进行操作。
现在,对于特定的测试用例,并不是所有参数都可以填写,而REST请求无论如何都将所有参数作为emtpy字符串发送。
对于这个项目,这是有害的,因为空字符串可以给出答案,而这不是我想要的。
例如:
Testsuite参数:名称,cbe_number,国家/地区,市镇,邻居,街道,门牌号,po_box
测试用例:搜索公司名称
对于此测试用例,仅参数“名称”将被填充,但是当我发送请求时,所有其他参数也将被填充在URL中。 我的问题是:“如何在每个测试用例中省略其他参数?”
答案是,目前尚不可能,但应该进行一些工作。虽然这对我不起作用。我遵循了Kudoed主持人给我的步骤,其中缺少一个步骤,但是即使在修复此步骤之后,在调试之后GroovyScript仍然会显示错误消息。 “ wslite.rest.RESTClientException:URL和方法是必需的 第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]以及它们值,但仍然有错误消息..... 预先感谢您对此进行调查。
答案 0 :(得分:0)
该代码可以正常工作:
@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}')
为您提供了一个空或无效的值