Автор оригинала: Pankaj Kumar.
REST Assured-это API языка Java, специфичный для домена, для упрощения тестирования веб-служб RESTful. Будьте уверены, API можно использовать для вызова веб-служб REST и сопоставления содержимого ответов для их тестирования.
БУДЬТЕ Уверены
БУДЬТЕ уверены, может использоваться для тестирования XML, а также веб-сервисов на основе JSON. БУДЬТЕ уверены, что вы можете быть интегрированы с фреймворками JUnit и TestNG для написания тестовых примеров для нашего приложения.
БУДЬТЕ уверены, поддерживает запросы POST, GET, PUT, DELETE, OPTIONS, PATCH и HEAD и может использоваться для проверки и проверки ответов на эти запросы.
БУДЬТЕ уверены, реализован в Groovy и использует шаблон компоновщика для создания запросов, установки заголовков, анализа ответа и последующего сопоставления их с ожидаемыми данными. Он использует сопоставители Hamcrest для сравнения фактического ответа с ожидаемым ответом.
Одной из мощных функций REST assured является поддержка синтаксиса XML Xpath и JSONPath для проверки определенных элементов данных ответа. Это очень похоже на использование XPath API.
БУДЬТЕ Уверены, Необходимые Условия для Обучения
Прежде чем мы создадим наши НАДЕЖНЫЕ тесты, нам понадобятся некоторые веб-сервисы для тестирования. Ниже приведены дополнительные компоненты, используемые в этом руководстве.
Сервер JSON : Это отличный инструмент для создания веб-сервисов на основе JSON, все, что для этого требуется, – это образец файла JSON. Он автоматически создает конечные точки API GET, POST, PUT, DELETE для нас. Я написал об этом в JSON Server учебнике. Ниже JSON приведены входные данные для нашего примера веб-службы на основе JSON.
На рисунке ниже показаны API-интерфейсы, предоставляемые веб-службой json-server.
- Джерси : Я использую веб-сервис на основе XML, созданный в Учебнике по Джерси . Вы можете скачать этот проект из нашего репозитория GitHub и запустить на tomcat.
- Тестирование : Я буду использовать TestNG для создания тестовых случаев, будьте уверены, вы тоже можете использовать JUnit. Вы можете узнать о структуре тестирования с помощью наших Учебных пособий по тестированию .
БУДЬТЕ Уверены, Учебник
Создайте проект на основе maven в Eclipse и добавьте гарантированные и проверенные зависимости.
io.rest-assured rest-assured 3.1.0 test org.testng testng 6.14.3 test
БУДЬТЕ уверены, ПОЛУЧИТЕ Тест
Ниже фрагмент кода показывает, как вызвать метод GET и проверить элементы JSON ответа. Обратите внимание на использование статического импорта , некоторые из них будут использоваться в последующих примерах.
import static io.restassured.RestAssured.delete; import static io.restassured.RestAssured.get; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.hasItems; import org.hamcrest.Matchers; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import io.restassured.http.ContentType; import io.restassured.response.Response; public class RESTAssuredJSONTests { final static String ROOT_URI = "https://localhost:7000/employees"; @Test public void simple_get_test() { Response response = get(ROOT_URI + "/list"); System.out.println(response.asString()); response.then().body("id", hasItems(1, 2)); response.then().body("name", hasItems("Pankaj")); } }
Вот еще один сложный пример, где мы используем TestNG dataProvider с уверенностью.
@Test(dataProvider = "dpGetWithParam") public void get_with_param(int id, String name) { get(ROOT_URI + "/get/" + id).then().body("name", Matchers.is(name)); } @DataProvider public Object[][] dpGetWithParam() { Object[][] testDatas = new Object[][] { new Object[] { 1, "Pankaj" }, new Object[] { 2, "David" } }; return testDatas; }
БУДЬТЕ Уверены, ОПУБЛИКУЙТЕ Пример
Ниже фрагмент кода показывает, как создать запрос JSON с различными заголовками, а затем протестировать элементы ответа.
@Test public void post_test() { Response response = given(). contentType(ContentType.JSON) .accept(ContentType.JSON) .body("{\"name\": \"Lisa\",\"salary\": \"2000\"}") .when() .post(ROOT_URI + "/create"); System.out.println("POST Response\n" + response.asString()); // tests response.then().body("id", Matchers.any(Integer.class)); response.then().body("name", Matchers.is("Lisa")); }
БУДЬТЕ Уверены, ПОДАЙТЕ Пример
@Test public void put_test() { Response response = given() .contentType(ContentType.JSON) .accept(ContentType.JSON) .body("{\"name\": \"Lisa Tamaki\",\"salary\": \"20000\"}") .when() .put(ROOT_URI + "/update/3"); System.out.println("PUT Response\n" + response.asString()); // tests response.then().body("id", Matchers.is(3)); response.then().body("name", Matchers.is("Lisa Tamaki")); response.then().body("salary", Matchers.is("20000")); }
БУДЬТЕ Уверены, УДАЛИТЕ Пример
@Test public void delete_test() { Response response = delete(ROOT_URI + "/delete/3"); System.out.println(response.asString()); System.out.println(response.getStatusCode()); // check if id=3 is deleted response = get(ROOT_URI + "/list"); System.out.println(response.asString()); response.then().body("id", Matchers.not(3)); }
БУДЬТЕ уверены, пример веб-служб XML REST
На изображениях ниже показаны выходные данные нашего веб-сервиса Jersey REST.
Случай успеха – Код ответа 200
Случай ошибки – Код ответа 500
Вот наш тестовый класс, показывающий, как протестировать оба случая с помощью REST Assured.
package com.journaldev.restassured; import static io.restassured.RestAssured.given; import org.hamcrest.Matchers; import org.testng.Assert; import org.testng.annotations.Test; import io.restassured.http.ContentType; import io.restassured.response.Response; public class RESTAssuredXMLTests { @Test public void post_xml_test() { Response response = given(). contentType(ContentType.XML) .accept(ContentType.XML) .body("\n" + " ") .when() .post("https://localhost:8080/My-Jersey-Project/rest/emp/getEmp"); System.out.println("POST Response\n" + response.asString()); // tests Assert.assertEquals(response.getStatusCode(),200); response.then().body("empResponse.id", Matchers.is("1")); response.then().body("empResponse.name", Matchers.is("PK")); } @Test public void post_xml_error_test() { Response response = given(). contentType(ContentType.XML) .accept(ContentType.XML) .body("1 \n" + "PK \n" + "\n" + " ") .when() .post("https://localhost:8080/My-Jersey-Project/rest/emp/getEmp"); System.out.println("POST Error Response\n" + response.asString()); // tests response.then().body("errorResponse.errorId", Matchers.is("2")); response.then().body("errorResponse.errorCode", Matchers.is("Wrong ID")); Assert.assertEquals(response.getStatusCode(),500); } }2 \n" + "PK \n" + "
При выполнении вышеуказанного тестового класса мы получаем следующий результат.
POST Error ResponsePOST Response Wrong ID 2 PASSED: post_xml_error_test PASSED: post_xml_test 1 PK
Обратите внимание, что основное изменение заключается в том, где мы устанавливаем тело запроса, нет никаких изменений в способе получения элементов ответа, будь то ответ JSON или XML. Это делает REST Assured мощным и простым в освоении и использовании.
Резюме
БУДЬТЕ уверены, это поможет нам легко протестировать наши API REST. Он легко интегрируется с TestNG и JUnit. JSONPath и XML-путь позволяют нам легко анализировать данные ответов и тестировать определенные элементы. Поскольку он использует API Hamcrest, существует множество вариантов сопоставления фактического результата с ожидаемыми данными.
Ссылка: Официальная документация