Тестирование API является одним из важнейших аспектов процесса тестирования и играет важную роль на втором уровне пирамиды тестирования. А также обеспечивает эффективность тестирования и снижение затрат, позволяя выявить потенциальные ошибки на ранних этапах.
Существует два подхода к тестированию API. Первый — это традиционный ручной метод с использованием инструментов, таких как Postman. В качестве альтернативы можно ускорить выполнение тест-кейсов с помощью инструментов автоматизации тестирования API. В этой статье мы рассмотрим процесс создания фреймворка для автоматизации тестирования API с использованием Playwright.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Почему стоит выбрать Playwright для тестирования API? Одно из основных преимуществ — это возможность использования полного функционала Playwright. К тому же этот инструмент не требует дополнительных конфигураций и предоставит доступ ко всем методам запросов API.
Начнём с установки пакета @playwright/test в файл package.json и затем перейдём к созданию необходимого тестового сценария.
Мы воспользуемся шаблоном для проектирования модели страницы (Page Object Model), чтобы улучшить возможность повторного использования и читаемость, а также упростить отладку. Вот предполагаемая структура нашего фреймворка:
1. Features будет использоваться для хранения запросов API и связанной с ними логики для каждой соответствующей функции.
2. Мы будем использовать Fixture для запуска процесса абстрагирования API и передачи экземпляра запроса в конструктор в файле APIutils.ts.
3. Внутри файла APIutils.ts мы разместим все тестовые методы для API-запросов, которые будут использоваться в процессе тестирования.
4. В файле APITestSuite.ts мы будем хранить все тест-кейсы, которые необходимо выполнить.
И, наконец, файл playwright.config.ts, который содержит все основные конфигурации, необходимые для нашего фреймворка.
Один из удобных методов, доступных в Playwright, — это использование аргумента request в параметрах теста.
Это простой и быстрый способ выполнения тестов API с минимальными усилиями по написанию кода.
В нашем случае создание фикстуры теста выполняется довольно просто, как показано ниже. Мы создаём пользовательские данные, включая фикстуры API типа api
, расширяющую базовый тестовый объект. Фикстура API устанавливает экземпляр утилиты api
с помощью объекта request
и делает его доступным для тестов с помощью функции use
.
Теперь мы можем написать наш метод тестирования внутри APIUtils.ts
. Приведённый ниже код определяет класс API
для обработки API-запросов с помощью Playwright. Он инициализирует экземпляр класса с объектом APIRequestContext
, позволяя взаимодействовать с HTTP-запросами, управляемыми Playwright.
import { APIRequestContext } from "playwright-core"; export default class API { private request: APIRequestContext; constructor(request: APIRequestContext) { this.request = request; }
После этого мы можем легко написать наш тестовый метод, как показано ниже:
async postReq(endpoint: string, reqBody: object) { const res = await this.request.post(endpoint, { data: reqBody }) return res } async getReq(endpoint: string) { const res = await this.request.get(endpoint) return res } async putReq(endpoint: string, reqBody: object, token: string) { const res = await this.request.put(endpoint, { data: reqBody, headers: { 'Cookie': `token=${token}` } }) return res } async patchReq(endpoint: string, reqBody: object, token: string) { const res = await this.request.patch(endpoint, { data: reqBody, headers: { 'Cookie': `token=${token}` } }) return res } async deleteReq(endpoint: string, token: string) { const res = await this.request.delete(endpoint, { headers: { 'Cookie': `token=${token}` } }) return res }
Для повышения удобства повторного использования, минимизации избыточности и достижения более оптимизированного кода мы можем структурировать его следующим образом:
Этот код определяет частный метод makeRequest
для отправки HTTP-запросов с помощью Playwright. Он принимает такие параметры, как эндпоинт, HTTP-метод, тело запроса и необязательный токен для аутентификации. Код формирует запрос, включая заголовки и данные, а также возвращает ответ.
Кроме того, есть методы, такие как postReq и getReq, которые используют makeRequest
для выполнения запросов POST и GET. Эти методы упрощают тестирование API, указывая метод HTTP и обрабатывая детали запроса.
Для нашего набора тестов API нужно импортировать необходимые библиотеки и тестовые фикстуры. Затем мы определяем тест-кейсы в соответствии с нашими сценариями.
Далее, при создании тест-кейсов, мы используем параметр API. Этот параметр позволяет вызывать все тестовые методы в классе API.
Теперь мы можем выполнить наш тест и просмотреть отчёт о тестировании, как показано ниже:
Заключение
Playwright может быть отличным инструментом для тестирования API, особенно когда он также используется и для сквозного тестирования. Это позволит сократить количество инструментов тестирования и сделать процесс тестирования более эффективным.
Перевод статьи «Tips & Tricks : Intuitive API Testing With Playwright».