1. Обзор
В этом кратком руководстве мы рассмотрим некоторые расширенные сценарии с поддержкой REST. Мы изучали REST-assured ранее в руководстве Руководство по REST-assured .
Чтобы продолжить, мы рассмотрим примеры, показывающие, как устанавливать заголовки, файлы cookie и параметры для наших запросов.
Настройка такая же, как и в предыдущей статье, поэтому давайте углубимся в наши примеры.
2. Настройка параметров
Теперь давайте обсудим, как указать различные параметры для нашего запроса, начиная с параметров пути.
2.1. Параметры пути
Мы можем использовать pathParam(имя параметра, значение)
для указания параметра пути:
@Test
public void whenUsePathParam_thenOK() {
given().pathParam("user", "foreach")
.when().get("/users/{user}/repos")
.then().statusCode(200);
}
Чтобы добавить несколько параметров пути, мы будем использовать метод pathParams()
:
@Test
public void whenUseMultiplePathParam_thenOK() {
given().pathParams("owner", "foreach", "repo", "tutorials")
.when().get("/repos/{owner}/{repo}")
.then().statusCode(200);
given().pathParams("owner", "foreach")
.when().get("/repos/{owner}/{repo}","tutorials")
.then().statusCode(200);
}
В этом примере мы использовали именованные параметры пути, но мы также можем добавить неименованные параметры и даже объединить их:
given().pathParams("owner", "foreach")
.when().get("/repos/{owner}/{repo}", "tutorials")
.then().statusCode(200);
Результирующий URL-адрес в данном случае — https://api.github.com/repos/foreach/tutorials.
Обратите внимание, что безымянные параметры основаны на индексах.
2.2. Параметры запроса
Далее давайте посмотрим, как мы можем указать параметры запроса с помощью queryParam():
@Test
public void whenUseQueryParam_thenOK() {
given().queryParam("q", "john").when().get("/search/users")
.then().statusCode(200);
given().param("q", "john").when().get("/search/users")
.then().statusCode(200);
}
Метод param()
будет действовать как queryParam()
с запросами GET.
Для добавления нескольких параметров запроса мы можем либо объединить несколько методов queryParam()
, либо добавить параметры в метод queryParams()
:
@Test
public void whenUseMultipleQueryParam_thenOK() {
int perPage = 20;
given().queryParam("q", "john").queryParam("per_page",perPage)
.when().get("/search/users")
.then().body("items.size()", is(perPage));
given().queryParams("q", "john","per_page",perPage)
.when().get("/search/users")
.then().body("items.size()", is(perPage));
}
2.3. Параметры формы
Наконец, мы можем указать параметры формы с помощью formParam():
@Test
public void whenUseFormParam_thenSuccess() {
given().formParams("username", "john","password","1234").post("/");
given().params("username", "john","password","1234").post("/");
}
Метод param()
будет действовать как formParam()
для запросов POST.
Также обратите внимание, что formParam()
добавляет заголовок Content-Type
со значением « application/x-www-form-urlencoded
».
3. Настройка заголовков
Далее мы можем настроить заголовки наших запросов с помощью header():
@Test
public void whenUseCustomHeader_thenOK() {
given().header("User-Agent", "MyAppName").when().get("/users/foreach")
.then().statusCode(200);
}
В этом примере мы использовали header()
для установки заголовка User-Agent
.
Мы также можем добавить заголовок с несколькими значениями, используя тот же метод:
@Test
public void whenUseMultipleHeaderValues_thenOK() {
given().header("My-Header", "val1", "val2")
.when().get("/users/foreach")
.then().statusCode(200);
}
В этом примере у нас будет запрос с двумя заголовками: My-Header:val1
и My-Header:val2.
Для добавления нескольких заголовков мы будем использовать метод headers()
:
@Test
public void whenUseMultipleHeaders_thenOK() {
given().headers("User-Agent", "MyAppName", "Accept-Charset", "utf-8")
.when().get("/users/foreach")
.then().statusCode(200);
}
4. Добавление файлов cookie
Мы также можем указать собственный файл cookie для нашего запроса, используя cookie()
:
@Test
public void whenUseCookie_thenOK() {
given().cookie("session_id", "1234").when().get("/users/foreach")
.then().statusCode(200);
}
Мы также можем настроить наш файл cookie с помощью конструктора файлов cookie
:
@Test
public void whenUseCookieBuilder_thenOK() {
Cookie myCookie = new Cookie.Builder("session_id", "1234")
.setSecured(true)
.setComment("session id cookie")
.build();
given().cookie(myCookie)
.when().get("/users/foreach")
.then().statusCode(200);
}
5. Вывод
В этой статье мы показали, как мы можем указать параметры запроса, заголовки и файлы cookie при использовании REST-assured.
И, как всегда, полный исходный код примеров доступен на GitHub .