请求不在ReadyAPI中工作,尽管它在swagger或Postman中工作

时间:2018-01-24 10:29:49

标签: httprequest ready-api

我从swagger导入的请求有问题。

我的请求看起来像/m2m/fim/items?filter=(tags=DEVICE)&exclude=tags,objectClass,href,operations,attributes,metadata,factory&expand=properties&limit=20

随着招摇,我可以测试它,如果我在Postman中导入它,它也可以。它给了我当前的要求:

curl -X GET \ 'http://xx.xx.xxx.xxx/m2m/fim/items?filter=(tags%3DDEVICE)&exclude=tags%2CobjectClass%2Chref%2Coperat...' \

我的SOAP请求看起来像

"GET /m2m/fim/items?filter=%28tags%3DDEVICE%29&exclude=tags%2CobjectClass%2Chref%2Coperations%2Cattributes%2Cmetadata%2Cfactory&expand=properties&limit=20 HTTP/1.1[\r][\n]"

它看起来像是'过滤器的括号。参数被转换为请求(Postman不会发生),然后我的请求失败。

有谁能告诉我我可以使用哪种语法,以便不会解释括号?

谢谢

编辑:在我的HTTP日志中,我可以看到"接受编码:gzip,deflate"这不是我想要的。在邮递员中我有标题Accept:application / json。

我知道如何从首选项中删除当前标题,但我无法弄清楚如何设置所需标题。有人知道吗?

解决方案但尚未完成。

我发现问题是什么,我需要一个标题Accept: application/json

现在我的问题是以一种简单的方式将它添加到我所有测试用例中的所有请求中(我有超过400个请求)

亚历

1 个答案:

答案 0 :(得分:0)

添加标题的几种方法:

    请求本身中的
  • :选择标题选项卡并添加

  • 在资源级别: 在“项目”选项卡中选择资源。

在资源路径的右侧,选择“参数”选项卡,然后单击“添加参数”。

设置名称和值,并选择样式为HEADER。

这将在SoapUI选项卡

中为此资源下的所有请求设置标头
  • 在项目级别,为了更新所有testCases中的所有请求:

在“项目”选项卡中,在事件处理程序管理器中添加一个事件。 使用以下内容添加RequestFilter.filterRequest事件:

def headers = request.requestHeaders headers.put( "Accept", "application/json" ) request.requestHeaders = headers

警告!只使用一次,否则将在每个请求的启动时添加标题

最后我使用了以下groovy脚本:

` import com.eviware.soapui.support.types.StringToStringMap

testRunner.testCase.testSuite.project.testSuites.each {

suite ->
suite.getValue().testCases.each
{
    q1->
    q1.getValue().testSteps.each
    {
        it->
        if (it.getValue().config.type.equals("restrequest"))
        {
            //Get the headers of the current teststep
            def headers = it.getValue().getHttpRequest().getRequestHeaders()
            //log.info "headers = " + headers
            def list = []
            //Append the new header to the existing list
            list.add("application/json")
            log.info "list = " + list
            headers["Accept"] = list;
            //Set the updated header list
            it.getValue().getHttpRequest().setRequestHeaders(headers)
        }
    }
}

}
`

虽然我认为必须有一种方法可以使之前的解决方案一次性完成(但我在groovy中不够熟练才能找到它)