Как создать mock (заглушку) для ответа API с помощью Charles Proxy?

«Как создать mock (заглушку) для ответа API с помощью Charles Proxy?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Charles Proxy предоставляет два основных инструмента для создания моков (заглушек) ответов сервера: Map Local и Rewrite. Они позволяют подменять реальные ответы API на заранее подготовленные данные для тестирования.

1. Map Local (Подмена на локальный файл)

Идеально для статических моков. Charles будет возвращать содержимое указанного файла вместо реального ответа сервера.

Шаги:

  1. Захватите нужный запрос в списке сессий (Session List).
  2. Кликните правой кнопкой мыши по запросу.
  3. Выберите Map Local....
  4. В открывшемся окне нажмите Choose... и укажите путь к локальному файлу (JSON, XML, HTML, TXT и т.д.).
  5. Настройте при необходимости Map From (шаблон URL) и Map To (путь к файлу).
  6. Убедитесь, что опция Map Local включена в меню Tools.

Пример локального файла mock_user.json:

{
  "id": 999,
  "username": "test_user",
  "email": "mock@example.com",
  "status": "active"
}

2. Rewrite (Динамическое переписывание)

Более гибкий инструмент для динамического изменения запросов или ответов по заданным правилам. Можно менять статус-код, заголовки, тело ответа.

Шаги для мока ответа:

  1. Перейдите в Tools > Rewrite....
  2. Нажмите Add, чтобы создать новый набор правил (Rule Set). Дайте ему имя (например, "Mock API Responses").
  3. В разделе Rules нажмите Add.
  4. Location (Где применять):
    • Protocol: http или https.
    • Host: Домен вашего API (например, api.example.com).
    • Path: Шаблон пути (например, /users/*).
  5. Rule Type (Что делать): Выберите Body.
  6. Action: Выберите Replace.
  7. В поле Replace with введите тело мок-ответа (например, {"message": "Mocked!"}).
  8. Убедитесь, что ваш набор правил активирован (галочка напротив его имени).

Когда что использовать:

  • Map Local: Для сложных, многострочных ответов, которые удобно хранить в файлах.
  • Rewrite: Для быстрых моков, изменения статус-кодов (например, на 404 или 500) или точечной подмены части ответа.