在REST Assured中,如何使用参数映射?

时间:2017-10-24 11:18:58

标签: java rest hashmap rest-assured getresponse

问题:

Response resp = given().headers(headerElements).param("language", "en").and().param("currency", "***").and()
            .param("destination", "**").and().param("theme", Arrays.asList(arr)).and().param("order", "1").and()
            .param("partner", "***").and().param("pageNumber", "1").and().param("pageSize", "20").when().get(uri);

这完全正常,并为我提供了进一步断言所需的结果。

但是,如果我将参数作为Map发送,它不会给我想要的结果。

Response resp = given().headers(headerElements).params(m).when().get(uri);

m.put("language", "en");
m.put("currency", "**");
m.put("destination", "***");
m.put("theme", Arrays.asList(theme_list_1));
m.put("order", "1");
m.put("partner", "***");
m.put("pageSize", "20");
m.put("pageNumber", "1");

2 个答案:

答案 0 :(得分:0)

根据放心的官方文档,有一种方法可以为单个参数传递多个值,但不能通过键值对本身传递。

[https://github.com/rest-assured/rest-assured/wiki/Usage#parameters]

但是,您可以将多个值作为字符串传递;像这样:

.param("language", "en", "currency", "**", "destination", "***") 

答案 1 :(得分:0)

看看我的测试,您的解决方案似乎是正确的。我看到的唯一区别是您的第一个请求中的值

.param("currency", "***").and().param("destination", "**")

来自第二个请求

m.put("currency", "**");
m.put("destination", "***");

货币和目的地的*号不同。也许这可能是问题所在?