Тестирование API с Playwright: советы и рекомендации

Тестирование 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.config.ts

Один из удобных методов, доступных в Playwright, — это использование аргумента request в параметрах теста.

Аргумент request в параметрах теста Playwright

Это простой и быстрый способ выполнения тестов 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».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *