В наше время автоматизаторов всё чаще просят заавтоматизировать не только функциональные тесты для веба с использованием Selenium, но и написать тесты на API. В частности, для веб сервисов архитектуры REST.
В этой записке я приведу пару простых примеров использования библиотеки Rest-Assured, предназначенной для тестирования REST сервисов. Она поддерживает все типы запросов: POST, GET, PUT, DELETE, OPTIONS, PATCH, HEAD и может быть использована для проверки ответов по посланным запросам.
В качестве системы сборки я использую Maven, как наиболее простую и удобную. Итак, добавим в pom.xml следующие зависимости:
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
Далее привожу собственно примеры кода. Я думаю, комментарии излишни.
Пример посылки GET-запроса
package com.example.tests;
import static io.restassured.RestAssured.get;
import io.restassured.response.Response;
import org.json.JSONArray;
import org.json.JSONException;
import org.testng.Assert;
import org.testng.annotations.Test;
public class RestAssuredTestArticle {
@Test(description = "GET")
public void getRequestExampleTest() throws JSONException {
Response response = get("http://restcountries.eu/rest/v1/name/russia");
JSONArray jsonResponse = new JSONArray(response.asString());
String capital = jsonResponse.getJSONObject(0).getString("capital");
Assert.assertEquals(capital, "Moscow");
}
}
Пример посылки POST-запроса
package com.example.tests;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.json.JSONObject;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.Date;
public class RestAssuredTestArticle {
@Test(description = "POST")
public void postRequestExampleTest() {
String someRandomString = String.format("%1$TH%1$TM%1$TS", new Date());
JSONObject requestBody = new JSONObject();
requestBody.put("FirstName", someRandomString);
requestBody.put("LastName", someRandomString);
requestBody.put("UserName", someRandomString);
requestBody.put("Password", someRandomString);
requestBody.put("Email", someRandomString + "@gmail.com");
RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");
request.body(requestBody.toString());
Response response = request.post("http://restapi.demoqa.com/customer/register");
int statusCode = response.getStatusCode();
Assert.assertEquals(statusCode, 201);
String successCode = response.jsonPath().get("SuccessCode");
Assert.assertEquals(successCode, "OPERATION_SUCCESS");
System.out.println(response.getBody().asString());
}
}
Автор: рекрут