Всем привет. Извиняюсь, что давно не писал, – было много загрузки на текущих проектах, потом небольшой отпуск.
Все чаще тестирование API начинает преобладать и пользоваться спросом. Поэтому хочу вернуться к теме автоматизации сервисов, в частности,- REST. В планах у меня уже давно есть серия статей о создании и тестировании SOAP и REST сервисов, но сегодня из-за нехватки времени хочу затронуть лишь практическую часть автоматизации.
В этой статье мы познакомимся с библиотекой Rest-Assured, предназначенной для тестирования REST сервисов и которая есть надстройкой над HTTP Builder. Она поддерживает все запросы POST, GET, PUT, DELETE, OPTIONS, PATCH, HEAD и может быть использована для проверки ответов (responses) по конкретно заданным запросам (requests).
Для теста мы будем использовать API информации о странах, которое есть в открытом доступе. Для начала создадим простой Maven проект и внесем в POM-файл следующие зависимости:
|
1 2 3 4 5 6 7 8 9 10 11 |
<dependency> <groupId>com.jayway.restassured</groupId> <artifactId>rest-assured</artifactId> <version>2.1.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160212</version> </dependency> |
Первая из них непосредственно является библиотекой Rest-Assured и понадобится нам для выполнения запроса GET к нашему API. Вторая содержит методы, например, для обработки JSON исключений и сериализации /десериализации объектов. Также нам понадобится библиотека TestNG для запуска тестов, которую я добавил явно к библиотекам проекта.
Конечный код со всеми комментариями представлен ниже:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package CountriesRestTests; import org.testng.AssertJUnit; import org.testng.annotations.Test; import static com.jayway.restassured.RestAssured.get; import com.jayway.restassured.response.Response; import org.json.JSONArray; import org.json.JSONException; public class GetTest { @Test public void getRequestFindCapital() throws JSONException { // выполняем запрос get для доступа ко всем параметрам ответа Response resp = get("http://restcountries.eu/rest/v1/name/ukraine"); JSONArray jsonResponse = new JSONArray(resp.asString()); // получение параметра capital (столицы Норвегии) String capital = jsonResponse.getJSONObject(0).getString("capital"); // проверка, что столицей является Осло AssertJUnit.assertEquals(capital, "Kiev"); } } |