Рубрики
Без рубрики

БУДЬТЕ Уверены, Учебник

БУДЬТЕ уверены, Учебник, БУДЬТЕ уверены, Спокойное тестирование API, БУДЬТЕ уверены, Пример, БУДЬТЕ уверены, XML, веб-служба JSON, БУДЬТЕ уверены, ПОЛУЧИТЕ, ОПУБЛИКУЙТЕ, ПОМЕСТИТЕ, УДАЛИТЕ код

Автор оригинала: 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.

БУДЬТЕ Уверены, Необходимые Условия для Обучения

Прежде чем мы создадим наши НАДЕЖНЫЕ тесты, нам понадобятся некоторые веб-сервисы для тестирования. Ниже приведены дополнительные компоненты, используемые в этом руководстве.

  1. Сервер JSON : Это отличный инструмент для создания веб-сервисов на основе JSON, все, что для этого требуется, – это образец файла JSON. Он автоматически создает конечные точки API GET, POST, PUT, DELETE для нас. Я написал об этом в JSON Server учебнике. Ниже JSON приведены входные данные для нашего примера веб-службы на основе JSON.

    На рисунке ниже показаны API-интерфейсы, предоставляемые веб-службой json-server.

  2. Джерси : Я использую веб-сервис на основе XML, созданный в Учебнике по Джерси . Вы можете скачать этот проект из нашего репозитория GitHub и запустить на tomcat.
  3. Тестирование : Я буду использовать 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" + 
						"	1\n" + 
						"	PK\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("\n" + 
						"	2\n" + 
						"	PK\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);
	}

}

При выполнении вышеуказанного тестового класса мы получаем следующий результат.

POST Error Response
Wrong ID2
POST Response
1PK
PASSED: post_xml_error_test
PASSED: post_xml_test

Обратите внимание, что основное изменение заключается в том, где мы устанавливаем тело запроса, нет никаких изменений в способе получения элементов ответа, будь то ответ JSON или XML. Это делает REST Assured мощным и простым в освоении и использовании.

Резюме

БУДЬТЕ уверены, это поможет нам легко протестировать наши API REST. Он легко интегрируется с TestNG и JUnit. JSONPath и XML-путь позволяют нам легко анализировать данные ответов и тестировать определенные элементы. Поскольку он использует API Hamcrest, существует множество вариантов сопоставления фактического результата с ожидаемыми данными.

Ссылка: Официальная документация