<style>.lazy{display:none}</style>Советы и рекомендации: интуитивное тестирование API с помощью Playwright

Советы и рекомендации: интуитивное тестирование API с помощью Playwright

Привет, мои дорогие друзья! Тестирование API, несомненно, является одним из важнейших аспектов нашего пути тестирования. Оно играет важную роль в качестве второго уровня в пирамиде тестирования. API-тестирование отличается удивительной эффективностью и экономичностью, позволяя выявлять потенциальные ошибки на ранних стадиях разработки.

К тестированию API можно подойти двумя различными способами. Первый – это традиционный ручной метод с использованием для выполнения таких инструментов, как “Postman“. В качестве альтернативы можно автоматизировать тестовые случаи, используя любой из существующих инструментов тестирования API с соответствующим языком программирования. В этом блоге мы рассмотрим процесс построения фреймворка автоматизации API с использованием Playwright в проактивном режиме. Наша цель – внедрить лучшие практики, обеспечивающие эффективность и максимальную полезность.

Давайте проверим это вместе! 🚀

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Почему стоит выбрать Playwright для тестирования API? Существует множество причин для использования Playwright при тестировании API. Одним из основных преимуществ является использование всех возможностей Playwright. Playwright поддерживает тестирование API из коробки, предоставляя нам доступ ко всем методам запросов API. Это включает в себя возможность использования важных утверждений, тестовых приспособлений и необходимых крючков для тестирования – и все это без использования внешних прогонов тестирования, таких как “Mocha“, “Jest” и т.д. С помощью Playwright тестирование API становится удобной и эффективной частью вашего инструментария тестирования.

Мы начнем процесс с выполнения стандартной установки пакета “@playwright/test” в наш файл package.json, а затем перейдем к включению необходимого тестового сценария.

Мы будем использовать паттерн проектирования Page Object Model (POM) для повышения эффективности повторного использования, удобства чтения и отладки. Вот предполагаемая структура нашего фреймворка:

1. “Features” будет служить хранилищем для хранения специализированных API-запросов и связанной с ними логики для каждой соответствующей функции.

2. Для запуска процесса абстрагирования API мы будем использовать “Fixture“. Она будет передавать экземпляр запроса конструктору в APIutils.ts.

3. В файле “APIutils.ts” мы разместим все тестовые методы для API-запросов, которые будут использоваться в процессе тестирования.

4. В файле “APITestSuite.ts” мы будем содержать все наши тестовые случаи для выполнения

И, наконец, файл playwright.config.ts, который содержит все основные конфигурации, необходимые для нашего фреймворка

Одним из удобных методов, доступных нам в Playwright, является использование аргумента “request” в параметрах теста Playwright, что позволяет напрямую вызывать его из нашего тестового блока, как показано ниже.

Это самый простой и быстрый подход для проведения API-тестов с минимальными усилиями по кодированию. Однако если вы хотите выполнить более сложные сценарии с большим количеством вложенных запросов, одновременно использующих один и тот же экземпляр запроса, то для достижения этой цели лучше поместить их в тестовый метод (“POM”) с помощью тестового фиксатора.

Построение нашего тестового приспособления довольно простое, как показано ниже,
мы создаем пользовательские приспособления, включая приспособление “API” типа api, расширяющее базовый тестовый объект. Фикстура “API” создает экземпляр утилиты api с помощью объекта Playwright request и делает его доступным для тестов с помощью функции use обеспечивая удобство взаимодействия с API.

Теперь мы можем написать наш метод тестирования внутри нашего 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.

Теперь мы можем выполнить наш тест и просмотреть отчет о тестировании, как показано ниже:

Заключение

Тестирование API играет ключевую роль в нашем процессе тестирования, и его широкое освещение способствует получению высококачественного продукта. Playwright может быть отличным инструментом для тестирования API, особенно когда этот же инструмент используется для сквозного тестирования. Такой выбор позволяет сократить количество инструментов тестирования и использовать гибкость и возможности, предоставляемые Playwright. В этом блоге я продемонстрировал как традиционный подход, так и альтернативный метод, особенно ценный для сложных и вложенных сценариев, позволяющий создавать более чистые, читабельные и оптимизированные тестовые случаи. Я также привел примеры наиболее распространенных REST-версий API, включая GETPUTPATCH, и DELETE.

Перевод статьи «Tips & Tricks : Intuitive API Testing With Playwright».

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

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