![](https://habrastorage.org/getpro/habr/upload_files/c5b/b5d/b48/c5bb5db48d61825e07cb60f79c856b94.png)
Что такое автоматизация API?
Процесс автоматического тестирования и проверки функциональности программного интерфейса приложения (API) известен как автоматизация API. Она помогает убедиться, что API функционирует так, как задумано, и сокращает время и усилия, затрачиваемые на ручное тестирование.
Автоматизация API реализуется с помощью программных инструментов, которые отправляют запросы к API, анализируют ответы и сравнивают их с ожидаемыми результатами. Целью автоматизации API является повышение надежности и последовательности процесса тестирования, что позволяет экономить время и ресурсы.
Что такое REST API?
REST API расшифровывается как Representational State Transfer API (передача состояния представления API), что представляет собой архитектуру, основанную на веб-стандартах для создания веб-сервисов. Это распространенный способ взаимодействия между клиентами и серверами через интернет.
REST API используют HTTP-запросы для управления данными, чтобы POST (создать), PUT (обновить), GET (читать) и DELETE (удалять). Автоматизация API позволяет эффективно и тщательно тестировать REST API. Это реализуется за счет нескольких вызовов API и проверки ответов, что помогает выявить и устранить ошибки и проблемы на ранних стадиях процесса разработки.
Пример REST API
Предположим, у вас есть сайт, на котором размещена информация о книгах, и вы хотите, чтобы другие приложения могли получать эту информацию. Для этого вы можете создать REST API.
Вот как это работает:
Эндпоинт: Клиентское приложение создает запрос для определенного URL, так называемого эндпоинта, который представляет собой коллекцию книг. Например: "https://www.example.com/api/books".
Методы HTTP: Клиент использует один из следующих методов HTTP для выполнения запроса:
GET: Получение информации о книге или коллекции книг.
POST: Добавление новой книги в коллекцию.
PUT: Обновление информации о книге.
DELETE: Удаление книги из коллекции.
Response (ответ): Сервер отвечает данными в определенном формате, например, JSON, которые клиент может использовать для получения информации о книгах. Например, клиент может сделать GET-запрос на "https://www.example.com/api/books", чтобы получить список всех книг в коллекции. В ответ сервер получит полезную нагрузку в формате JSON, содержащую информацию о каждой книге, например, ее название, имя автора и номер ISBN.
Этот пример показывает, как REST API обеспечивает стандартный, программный способ взаимодействия клиентских приложений с данными сайта о книгах.
Cypress для автоматизации API
Cypress - это основанный на JavaScript фреймворк для тестирования веб-приложений. Он позволяет проводить сквозное тестирование пользовательского интерфейса и API вашего приложения. Это делает его отличным инструментом для автоматизации API.
Вот пример того, как использовать Cypress для тестирования API:
Установите Cypress:
npm install cypress --save-dev
Создайте тестовые файлы для методов GET, POST, PUT и DELETE с
cypress/e2e/cypress_api_tc.cy.js
Метод GET
Давайте посмотрим, как работают методы GET для получения данных о пользователе.
it("GET API testing Using Cypress API Plugin", () => {
cy.request("GET", "https://reqres.in/api/users?page=2").should((response) => {
expect(response.status).to.eq(200);
});
});
Метод POST
Вот как работают методы POST для добавления данных о пользователе.
it("POST API testing Using Cypress API Plugin", () => {
cy.request("POST", "https://reqres.in/api/users", {
name: "morpheus",
job: "leader",
}).should((response) => {
expect(response.status).to.eq(201);
});
});
Метод PUT
Давайте посмотрим, как работают методы PUT для обновления данных пользователя.
it("PUT API testing Using Flip Plugin", () => {
cy.request("PUT", "https://reqres.in/api/users/2", {
name: "QAAutomationLabs",
job: "QA Automation Engg",
}).should((response) => {
expect(response.status).to.eq(200);
});
});
Метод DELETE
Давайте посмотрим, как работают методы DELETE для удаления данных пользователя.
it("DELETE API testing Using Cypress API Plugin", () => {
cy.request("DELETE", "https://reqres.in/api/users/2").should((response) => {
expect(response.status).to.eq(204);
});
});
В этом примере функция cy.request()
используется для отправки запроса к конечной точке. Ответ от API сохраняется в переменной response и затем может быть использован для написания утверждений с помощью Chai.js
.
Результаты выполнения тестовых примеров
Вот отчет о тестах из нашего примера:
![](https://habrastorage.org/getpro/habr/upload_files/d87/1e5/e7b/d871e5e7b8069eabafe17b7ad0c16f5e.png)
Завершить статью хочу приглашением на бесплатный вебинар, в рамках которого разберём основы тестирования API и реализуем тестирование API с помощью тестового фреймворка vitest (работает на vite).