Mockarty: Руководство по быстрому старту
Начните работу с Mockarty за 20 минут. Это руководство проведет вас через установку, создание первого мока, его тестирование и знакомство с ключевыми возможностями.



Содержание
- Что такое Mockarty
- Установка
- Первый запуск
- Понимание пространств имен
- Создание первого мока
- Тестирование мока
- Faker для динамических ответов
- Добавление условий
- Импорт из OpenAPI
- API-тестирование
- Запись трафика
- Нагрузочное тестирование
- Фаззинг
- Генерация автономного сервера
- AI-ассистент
- Дальнейшие шаги
Что такое Mockarty
Mockarty — это полноценная платформа для бэкенд-тестирования: от мокирования API до нагрузочного тестирования, фаззинга, хаос-инжиниринга, контрактной валидации и управления тест-кейсами — всё в одном инструменте. Команды используют его, чтобы заменить разрозненные тулчейны (Postman + WireMock + k6 + TestRail + Jira + …) единой платформой, охватывающей весь жизненный цикл тестирования.
Поддерживаемые протоколы:
Прямые протоколы — обслуживаются нодой Mockarty по адресу /stubs/{namespace}/...:
- HTTP / REST — полноценное мокирование REST API с параметрами маршрутов, заголовками, query-параметрами и условиями на тело запроса
- GraphQL — определение запросов и мутаций с гибким мокированием ответов
- SOAP — мокирование сервисов на основе WSDL
- SSE — Server-Sent Events для потоков данных в реальном времени
- MCP — инструменты, ресурсы и промпты Model Context Protocol
Протоколы с генерируемым сервером — моки создаются в UI, но трафик обслуживается автономным сервером, собранным с помощью mockarty-server-generator (см. Руководство по генератору серверов):
- gRPC — унарные и потоковые моковые ответы из
.protoфайлов - WebSocket — мокирование двунаправленной коммуникации
- Kafka — мокирование сообщений на основе топиков с имитацией consumer/producer
- RabbitMQ — мокирование очередей и обменников с маршрутизацией сообщений
- TCP / UDP — мокирование raw-сокетной коммуникации
Ключевые возможности:
- Веб-интерфейс с визуальным Конструктором моков — код не требуется
- ИИ-ассистент — опишите, что вам нужно, на естественном языке, и агент создаст моки за вас
- Движок Faker — генерация реалистичных динамических данных (имена, email, UUID, адреса, даты и многое другое)
- Интерполяция JsonPath — извлечение значений из запросов и использование их в ответах
- Система хранилищ (Store) — поддержание состояния между запросами с помощью Global, Chain и Mock Store
- Сопоставление условий — маршрутизация запросов к различным ответам на основе тела, заголовков, query-параметров
- Режим прокси — пересылка запросов к реальным сервисам с добавлением задержки, модификацией заголовков или логированием
- Импорт OpenAPI / Swagger — генерация моков из существующих спецификаций API
- API Tester — встроенный инструмент тестирования, аналогичный Postman, для тестирования моков и реальных API
- Фаззинг — встроенный фаззер для обнаружения уязвимостей в ваших API
- Генераторы кода — создание автономных серверов gRPC, MCP, Kafka, RabbitMQ и других протоколов
- Хаос-инжиниринг — внедрение сбоев (остановка подов, задержки, нагрузка на ресурсы) в Kubernetes-кластеры для проверки устойчивости
- Контрактное тестирование — валидация моков по спецификациям OpenAPI, обнаружение дрифта API и consumer-driven контрактные тесты (совместимо с Pact)
- Управление тест-кейсами (TCM) — полноценный TMS: папки с кейсами, версионированные шаги, общие шаги, рабочие процессы ревью, ссылки на внешние трекеры (Jira, GitHub, Linear)
- Тест-планы — оркестрация любых комбинаций функциональных, нагрузочных, фаззинговых, хаос- и контрактных тестов в DAG-воркфлоу с расписаниями, гейтами и CI/CD-триггерами
- Многоузловая архитектура — масштабирование с помощью resolver-узлов и runner-агентов
Основные термины
Если вы новичок в Mockarty, вот несколько терминов, которые встречаются в этом руководстве:
- Пространство имен (Namespace) — изолированная рабочая область (как папка проекта). У каждого пространства имен свои моки, хранилища и коллекции тестов. Разные команды или сервисы могут использовать отдельные пространства, не мешая друг другу.
- Система хранилищ (Store system) — механизм сохранения состояния между запросами. В Mockarty три типа хранилищ: Global Store (общее состояние в пределах пространства имен), Chain Store (состояние для цепочки связанных моков) и Mock Store (временное состояние, существующее только во время обработки одного мока).
- Резолвинг моков (Mock resolution) — процесс выбора подходящего мока для входящего запроса. Mockarty анализирует маршруты, методы, условия и приоритеты, чтобы найти наилучшее совпадение.
- VU (Virtual Users) — виртуальные пользователи в нагрузочном тестировании. VU — это имитированный пользователь, отправляющий запросы параллельно. Например,
vus: 10означает, что 10 пользователей одновременно обращаются к вашему API.
Облако, self-hosted или локальная разработка
Mockarty работает в трёх конфигурациях. Выберите подходящую, прежде чем начинать:
| Режим | URL сервера | Кто администрирует | Кому подходит |
|---|---|---|---|
| Управляемое облако | https://cloud.mockarty.com (default в CLI) |
Команда Mockarty | Личное использование, небольшие команды — нулевая настройка |
| Self-hosted | https://mockarty.<ваша-компания> |
Ваш администратор | Регулируемые среды, требования on-prem |
| Локальная разработка | http://localhost:5770 (server) / :5780 (admin) |
Вы, на ноутбуке | Разработка плагинов, оффлайн-эксперименты |
Если нужно просто попробовать Mockarty (запустить пару моков, познакомиться с CLI), быстрее всего — облако: mockarty-cli auth login уже подключается туда и ведёт через OAuth. Переходите к разделу Открытие веб-интерфейса.
Если нужен self-hosted инстанс (corporate compliance, air-gapped), пройдите шаги «Установка» ниже и один раз настройте mockarty-cli:
mockarty-cli config set server_url https://mockarty.your-corp.example
Для локальной разработки поднимите admin-server у себя и укажите его через env-переменную:
export MOCKARTY_SERVER=http://localhost:5780
mockarty-cli auth login
Полное описание четырёхуровневой цепочки приоритетов flag > env > file > cloud default — в Подключение к серверу.
Установка
Уже развёрнуто? Если Mockarty уже работает в вашей организации (развёрнут администратором на корпоративном сервере или в Kubernetes), устанавливать ничего не нужно. Переходите сразу к разделу Открытие веб-интерфейса. Вам понадобится URL-адрес Mockarty и учётные данные от администратора.
Вариант A: CLI-установщик (рекомендуется)
Команда mockarty-cli install — самый быстрый способ развернуть Mockarty. Она автоматически определяет вашу платформу, находит последнюю версию и скачивает правильный бинарник — без ручной сборки URL.
Сначала скачайте и установите сам CLI:
# Скачать последнюю версию mockarty-cli
curl -fsSL https://mockarty.ru/download/latest/mockarty-cli-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o mockarty-cli
chmod +x mockarty-cli
sudo mv mockarty-cli /usr/local/bin/
Режим SQLite — разработка, один бинарник, без внешних зависимостей, мгновенный запуск:
mockarty-cli install mockarty --mode sqlite
Режим Docker Compose — генерирует docker-compose.yml + .env с PostgreSQL + Redis:
mockarty-cli install mockarty --mode docker-compose
docker compose up -d
Режим Kubernetes — выполняет helm install с PostgreSQL/Redis из Bitnami:
mockarty-cli install mockarty --mode kubernetes --namespace mockarty --admin-password <your-password>
Режим CRD Operator — устанавливает MockartyCluster CRD и создаёт ресурс кластера:
mockarty-cli install --mode operator --namespace mockarty
Все режимы кратко:
mockarty-cli install mockarty --mode sqlite # dev / быстрый старт
mockarty-cli install mockarty --mode docker-compose # генерация compose-файлов
mockarty-cli install mockarty --mode kubernetes # helm install в кластер
mockarty-cli install --mode operator # CRD + оператор
mockarty-cli install --all # скачать все бинарники
Примечание:
--mode sqliteпредназначен только для разработки и быстрого старта. Для production используйте--mode kubernetesили--mode docker-composeс PostgreSQL.
Вариант Б: Скачать бинарный файл вручную
Предпочтительнее использовать CLI-установщик (Вариант A). Если нужен прямой доступ к бинарникам, скачайте их для вашей платформы с GitHub Releases:
- macOS (Apple Silicon):
mockarty-darwin-arm64 - macOS (Intel):
mockarty-darwin-amd64 - Linux (x86_64):
mockarty-linux-amd64 - Linux (ARM64):
mockarty-linux-arm64 - Windows (x86_64):
mockarty-windows-amd64.exe
Сделайте файл исполняемым и запустите (macOS/Linux):
chmod +x mockarty-darwin-arm64
DB_USE=sqlite ./mockarty-darwin-arm64
Примечание:
DB_USE=sqliteтолько для разработки. Для production используйте PostgreSQL (см. Вариант Г или Д).
Вариант В: Docker (официальный образ)
docker run -d --name mockarty -p 5770:5770 \
-e HTTP_BIND_ADDR=0.0.0.0 \
-e DB_USE=sqlite \
-e COOKIE_SECURE=false \
mockarty/mockarty:latest
Вариант Г: Docker Compose с PostgreSQL
Для окружений, приближенных к продакшену, с PostgreSQL. Сгенерируйте compose-файлы через CLI (mockarty-cli install mockarty --mode docker-compose) или создайте docker-compose.yml вручную:
# docker-compose.yml
services:
mockarty:
image: mockarty/mockarty:latest
ports:
- "5770:5770"
environment:
HTTP_BIND_ADDR: "0.0.0.0"
DB_DSN: "postgres://mockarty:mockarty@postgres:5432/mockarty?sslmode=disable"
CACHE_TYPE: redis
REPO_REDIS_HOST: redis
REPO_REDIS_PORT: "6379"
FIRST_ADMIN_LOGIN: admin
FIRST_ADMIN_PASSWORD: "${FIRST_ADMIN_PASSWORD:-change_me}"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: mockarty
POSTGRES_PASSWORD: mockarty
POSTGRES_DB: mockarty
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U mockarty"]
interval: 5s
retries: 10
redis:
image: redis:7-alpine
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
retries: 10
volumes:
pgdata:
docker compose up -d
Вариант Д: Kubernetes (Helm)
Рекомендуется: Используйте CLI-установщик (mockarty-cli install mockarty --mode kubernetes) — он выполняет настройку репозиториев, сборку зависимостей и Helm install одной командой.
Ручная установка через Helm (если нужен полный контроль):
Предварительные требования: Kubernetes 1.24+, Helm 3.10+
# 1. Добавить репозиторий Bitnami (подчарты PostgreSQL и Redis)
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 2. Перейти в директорию Helm-чарта (включён в репозиторий Mockarty)
cd deploy/helm/mockarty
# 3. Собрать зависимости подчартов
helm dependency update
# 4. Установка — минимальный профиль (один admin-узел + PostgreSQL + Redis)
helm install mockarty . \
-f values.minimal.yaml \
--set admin.secrets.FIRST_ADMIN_PASSWORD="<your-password>" \
--set postgresql.auth.password="<db-password>" \
--namespace mockarty --create-namespace
Кластерный профиль (HA: 2 admin, resolvers, runners, orchestrator):
helm install mockarty . \
-f values.cluster.yaml \
--set admin.secrets.FIRST_ADMIN_PASSWORD="<your-password>" \
--set postgresql.auth.password="<db-password>" \
--namespace mockarty --create-namespace
# 5. Доступ к интерфейсу
kubectl port-forward svc/mockarty -n mockarty 5770:5770
open http://localhost:5770/ui/
Развёрнутые компоненты (кластерный профиль): Admin Node (веб-интерфейс + API), Mock Resolver (горизонтальное масштабирование), Runner Agent (выполнение тестов), Orchestrator (генерация кода), PostgreSQL, Redis. Задача token bootstrap автоматически создаёт интеграционные токены.
Вариант Е: CRD Operator (GitOps)
Для GitOps-процессов доступен custom resource definition MockartyCluster. Оператор отслеживает CR MockartyCluster и разворачивает полный стек.
Рекомендуется: mockarty-cli install --mode operator
Ручная установка:
kubectl apply -f deploy/operator/bundle.yaml
kubectl apply -f mockartycluster.yaml
Подробнее см. Руководство по развёртыванию и Архитектура масштабирования.
Примечания для Docker:
HTTP_BIND_ADDR— По умолчанию Mockarty привязывается кlocalhost(127.0.0.1), что недоступно снаружи контейнера. При запуске в Docker всегда устанавливайтеHTTP_BIND_ADDR=0.0.0.0, чтобы сервер слушал на всех интерфейсах.COOKIE_SECURE— Если вы обращаетесь к Mockarty по обычному HTTP (без TLS), установитеCOOKIE_SECURE=false. В противном случае cookies аутентификации не будут отправляться браузером и вход не будет работать.DB_USE=sqliteтолько для разработки и быстрого старта. Для production используйте PostgreSQL (Вариант Г или Д).
Первый запуск
Важно — Mockarty является серверным приложением. API Tester, рекордер, вебхуки и нагрузочные запуски отправляют трафик из самого процесса Mockarty, а не из вашего браузера. По умолчанию эти серверные компоненты блокируют запросы к приватным, loopback- и link-local адресам (
127.0.0.1,localhost,10.x.x.x,192.168.x.x,::1и т.д.) для защиты от SSRF. Если вам нужно, чтобы Mockarty ходил к сервису на той же машине (локальный бэкенд, dev-API, соседний контейнер на ноутбуке), установите переменную окруженияALLOW_PROXY_TO_PRIVATE_IPS=trueперед запуском бинарника. Для удалённого или корпоративного развёртывания значение по умолчанию правильное — оставьте выключенным.
# Локальная разработка: разрешить запросы к localhost / приватным сетям
ALLOW_PROXY_TO_PRIVATE_IPS=true DB_USE=sqlite ./mockarty-darwin-arm64
Самый простой способ начать — использовать встроенную базу данных SQLite. Внешние зависимости не требуются.
Запуск с SQLite
DB_USE=sqlite ./mockarty-darwin-arm64
Mockarty выполнит следующее:
- Создаст базу данных SQLite по пути
~/.mockarty/data.db - Автоматически применит все миграции
- Создаст администратора по умолчанию (логин:
admin, пароль:admin) - Создаст пространство имен по умолчанию —
sandbox - Запустит HTTP-сервер на порту 5770
В консоли вы увидите вывод, подобный этому:
INFO Starting Mockarty ...
INFO Using SQLite database: ~/.mockarty/data.db
INFO Migrations applied successfully
INFO HTTP server listening on :5770
Открытие веб-интерфейса
Откройте браузер и перейдите по адресу:
http://localhost:5770/ui/
Вы увидите страницу входа в Mockarty. Войдите с учетными данными по умолчанию: admin / admin.

После входа вы увидите главную панель управления с навигацией в боковом меню.

Примечание по безопасности: Измените пароль администратора по умолчанию после первого входа. Перейдите в Настройки в боковом меню, чтобы обновить учетные данные.
Пробная лицензия: При первом запуске Mockarty запускается с пробной лицензией на 7 дней, предоставляющей полный доступ ко всем функциям с неограниченным количеством мест (seats). Единственное ограничение — вы ограничены пространством имён
sandbox; создание пользовательских пространств имён требует коммерческой лицензии. Чтобы снять ограничение на пространства имён и убрать срок действия, примените лицензионный ключ в разделе Администрирование → Лицензия.
Подключение к существующему развёртыванию
Если Mockarty развёрнут вашим администратором, устанавливать ничего не нужно. Узнайте у администратора:
- URL-адрес Mockarty — например,
https://mockarty.company.com - Учётные данные — логин и пароль, или данные для входа через SSO/LDAP/OAuth
Откройте полученный URL в браузере, войдите в систему и переходите к разделу Понимание пространств имен, чтобы начать создавать моки. Все примеры в этом руководстве используют localhost:5770 — замените на URL вашего экземпляра Mockarty (см. URL-адреса в примерах ниже).
URL-адреса в примерах документации
Во всех примерах документации используется localhost:5770 — адрес Mockarty по умолчанию. Это работает при локальной разработке. Если ваш экземпляр Mockarty работает на удалённом сервере, замените localhost:5770 на реальный адрес.
| Развёртывание | Пример базового URL |
|---|---|
| Локальный бинарник | http://localhost:5770 |
| Docker (та же машина) | http://localhost:5770 |
| Docker (удалённый сервер) | http://192.168.1.50:5770 или http://mockarty.internal:5770 |
| Корпоративный сервер | https://mockarty.company.com |
| Kubernetes | https://mockarty.k8s.company.com |
| Демо / Облако | https://demo.mockarty.ru |
Пример: если ваш Mockarty развёрнут по адресу https://mockarty.staging.company.com, то вместо:
curl http://localhost:5770/api/v1/mocks
используйте:
curl https://mockarty.staging.company.com/api/v1/mocks
Важно для серверных функций (Рекордер, Фаззер, Нагрузочное тестирование): Эти функции работают на сервере Mockarty, а не в браузере. Когда Рекордер создаёт прокси на порту (например,
8085), этот порт открывается на машине, где работает Mockarty. Если Mockarty на удалённом сервере192.168.1.50, ваше приложение должно слать трафик наhttp://192.168.1.50:8085, а не наhttp://localhost:8085. Подробнее — в документации Рекордера.
Совет: В SDK (Go, Python, Java) базовый URL задаётся один раз при создании клиента. Все последующие вызовы используют этот URL автоматически. См. Руководство по SDK.
Понимание пространств имен
Mockarty организует все ресурсы в пространства имен (namespaces). Пространство имен — это изолированная рабочая область: у каждого пространства имен свои моки, хранилища и коллекции тестов. Это ключевая концепция, которую необходимо понять перед созданием моков.
Что такое пространство имен?
Думайте о пространстве имен как о папке проекта. Если у вас несколько команд или микросервисов, каждый может иметь собственное пространство имен с независимыми моками, которые не пересекаются друг с другом.
При первом запуске Mockarty автоматически создаёт пространство имён sandbox — общую песочницу, доступную всем пользователям. Создавать новые пространства имён могут только Администраторы и Support (системные роли). Владелец (Owner) пространства (роль пространства) может добавлять пользователей в своё пространство.
Шаблон URL
Все запросы к мокам маршрутизируются через пространства имен. Шаблон URL:
{АДРЕС_MOCKARTY}/stubs/{namespace}/{ваш-маршрут}
Например, если вы создали мок с маршрутом /api/users в пространстве имён sandbox:
| Развёртывание | URL мока |
|---|---|
| Локальный | http://localhost:5770/stubs/sandbox/api/users |
| Корпоративный сервер | https://mockarty.company.com/stubs/sandbox/api/users |
| Kubernetes | https://mockarty.k8s.company.com/stubs/sandbox/api/users |
Примечание: В примерах ниже используется
localhost:5770. Замените на реальный адрес вашего Mockarty при работе на удалённом сервере (см. URL-адреса в примерах выше).
Если позже вы создадите пространство имен payments и добавите мок с маршрутом /api/invoices, вы будете вызывать его по адресу:
http://localhost:5770/stubs/payments/api/invoices
Управление пространствами имен
Создавать и управлять пространствами имен можно в разделе Администрирование в боковом меню. Каждое пространство имен может иметь:
- Собственный набор моков
- Назначенных пользователей с определенными ролями
- Независимые Global и Chain Store
- Отдельные коллекции тестов и окружения

В данном руководстве мы будем использовать пространство имён sandbox, которое создается автоматически.
Создание первого мока
Давайте создадим простой HTTP-мок, который возвращает список пользователей.
Шаг 1: Откройте Конструктор
Нажмите Конструктор в боковом меню. Это визуальный инструмент для создания моков.


Шаг 2: Настройте маршрут
Заполните основные параметры мока:
| Поле | Значение |
|---|---|
| ID мока | my-first-mock |
| Протокол | HTTP |
| Маршрут | /api/users |
| Метод | GET |
| Пространство имен | sandbox |

Шаг 3: Определите ответ
В разделе Ответ установите:
- Код статуса:
200 - Content-Type:
application/json - Тело ответа:
{
"users": [
{
"id": "$.fake.UUID",
"name": "$.fake.Name",
"email": "$.fake.Email",
"age": "$.fake.Number"
},
{
"id": "$.fake.UUID",
"name": "$.fake.Name",
"email": "$.fake.Email",
"age": "$.fake.Number"
}
],
"total": 2
}

Шаг 4: Сохраните мок
Нажмите кнопку Создать мок. Появится уведомление об успешном создании, и мок отобразится в списке моков.

Тестирование мока
Теперь давайте вызовем мок и посмотрим ответ. Помните, что все вызовы моков идут через шаблон URL с пространством имен.
С помощью curl
curl -s http://localhost:5770/stubs/sandbox/api/users | jq
Пример ответа:
{
"users": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "John Smith",
"email": "john.smith@example.com",
"age": 34
},
{
"id": "f9e8d7c6-b5a4-3210-fedc-ba0987654321",
"name": "Emily Johnson",
"email": "emily.johnson@example.net",
"age": 28
}
],
"total": 2
}
Каждый вызов генерирует новые случайные данные благодаря функциям Faker. Повторный вызов вернет другие имена, email и UUID.
С помощью встроенного API Tester
Вы также можете тестировать прямо из интерфейса Mockarty:
- Перейдите в API Tester в боковом меню
- Создайте новый запрос
- Установите метод GET и URL
http://localhost:5770/stubs/sandbox/api/users - Нажмите Отправить

Faker для динамических ответов
Функции Faker генерируют реалистичные случайные данные при каждом запросе. Используйте их в теле ответа с префиксом $.fake..
Основные функции Faker
Выборка наиболее полезных функций Faker. См. Faker Reference для полного списка из 70+ функций.
| Функция | Пример вывода | Описание |
|---|---|---|
$.fake.UUID |
a1b2c3d4-e5f6-... |
Случайный UUID v4 |
$.fake.Name |
John Smith |
Полное имя |
$.fake.FirstName |
Emily |
Имя |
$.fake.LastName |
Johnson |
Фамилия |
$.fake.Email |
user@example.com |
Электронная почта |
$.fake.Username |
jsmith1990 |
Имя пользователя |
$.fake.Phone |
+1-555-123-4567 |
Номер телефона |
$.fake.Number |
42 |
Случайное целое число |
$.fake.Float |
0.73 |
Случайное число с плавающей точкой |
$.fake.Bool |
true |
Случайное булево значение |
$.fake.Date |
1982-02-27 |
Случайная дата |
$.fake.Timestamp |
1973-06-21 14:50:46 |
Случайная дата и время (строка) |
$.fake.RFC3339 |
2024-01-15T14:30:45Z |
Текущее время в формате RFC 3339 |
$.fake.UnixTime |
1197930901 |
Unix timestamp |
$.fake.IPv4 |
99.23.42.63 |
Случайный IPv4-адрес |
$.fake.IPv6 |
975c:fb2c:... |
Случайный IPv6-адрес |
$.fake.URL |
https://www.example.com/path |
Случайный URL |
$.fake.DomainName |
example.org |
Случайное доменное имя |
$.fake.Word |
innovative |
Случайное слово |
$.fake.Sentence |
The quick brown fox... |
Случайное предложение |
$.fake.Paragraph |
Lorem ipsum dolor... |
Случайный абзац |
$.fake.CCNumber |
373641309057568 |
Номер кредитной карты |
$.fake.CCType |
American Express |
Тип кредитной карты |
$.fake.Country |
United States |
Название страны |
$.fake.City |
San Francisco |
Название города |
$.fake.StreetAddress |
123 Main St |
Улица и номер дома |
$.fake.State |
California |
Штат или регион |
$.fake.ZipCode |
94102 |
Почтовый индекс |
$.fake.Company |
Acme Corp |
Название компании |
$.fake.JobTitle |
Senior Developer |
Должность |
$.fake.HexColor |
#3498db |
Случайный HEX-цвет |
$.fake.JWT |
eyJhbGciOiJIUzI1NiIs... |
Случайный JSON Web Token |
Интерполяция данных запроса
Вы также можете ссылаться на значения из входящего запроса:
| Выражение | Описание |
|---|---|
$.req.fieldName |
Поле JSON-тела запроса |
$.reqHeader.Authorization[0] |
Значение заголовка запроса |
$.queryParams.page |
Query-параметр |
$.pathParam.id |
Параметр URL-пути (из маршрута вида /users/:id) |
$.gS.keyName |
Значение из Global Store |
$.cS.keyName |
Значение из Chain Store |
$.mS.keyName |
Значение из Mock Store |
Пример: Возврат данных пользователя
Создайте мок для POST /api/users, который возвращает отправленные данные вместе со сгенерированными полями:
{
"id": "$.fake.UUID",
"name": "$.req.name",
"email": "$.req.email",
"createdAt": "$.fake.RFC3339",
"status": "active"
}
При отправке POST-запроса с телом {"name": "Alice", "email": "alice@example.com"} ответ будет содержать отправленные имя и email вместе со сгенерированным UUID и временной меткой.
Проверьте:
curl -s -X POST http://localhost:5770/stubs/sandbox/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}' | jq
Добавление условий
Условия позволяют возвращать различные ответы в зависимости от содержимого входящего запроса. Именно так вы имитируете реалистичное поведение API.
Пример: Разные ответы по ID пользователя
Создайте отдельные моки для разных ID пользователей или используйте условия на query-параметры на одном маршруте.
Вариант A: Отдельные моки для разных маршрутов
Создайте один мок для GET /api/users/1, возвращающий пользователя-администратора, и другой мок для GET /api/users/999, возвращающий ошибку «не найдено».
Мок 1 — Маршрут: /api/users/1, Ответ (статус 200):
{
"id": 1,
"name": "Admin User",
"role": "admin"
}
Мок 2 — Маршрут: /api/users/999, Ответ (статус 404):
{
"error": "User not found"
}
Вариант B: Использовать условия на query-параметры
Создайте один мок для GET /api/users и добавьте условия на query-параметр (например, ?id=1).
Условие:
- Тип:
queryParam - Ключ:
id - Проверка:
equals - Значение:
1
Ответ (статус 200):
{
"id": 1,
"name": "Admin User",
"role": "admin"
}
Затем создайте второй мок для GET /api/users без условий и с более низким приоритетом — он будет ответом по умолчанию.
Ответ (статус 404):
{
"error": "User not found"
}
Проверьте условный мок:
# Возвращает пользователя-администратора (условие совпадает)
curl -s "http://localhost:5770/stubs/sandbox/api/users?id=1" | jq
# Возвращает 404 (условие не совпадает, используется ответ по умолчанию)
curl -s "http://localhost:5770/stubs/sandbox/api/users?id=999" | jq
Типы условий
| Тип | Описание | Пример |
|---|---|---|
| body | Сопоставление по полю JSON-тела (JsonPath) | $.order.status равен "pending" |
| header | Сопоставление по заголовку запроса | Authorization содержит Bearer |
| queryParam | Сопоставление по query-параметру | page равен 1 |
Действия проверки (Assert)
| Действие | Описание | Пример |
|---|---|---|
equals |
Точное совпадение (глубокое сравнение для объектов/массивов) | $.user.role equals "admin" |
contains |
Для строк – поиск подстроки, для объектов – проверка подмножества, для массивов – наличие элемента | $.name contains "john" |
not_equals |
Отрицание equals – совпадает, когда значение НЕ равно ожидаемому |
$.status not_equals "deleted" |
not_contains |
Отрицание contains – совпадает, когда значение НЕ содержит ожидаемое |
$.tags not_contains "test" |
any |
Всегда совпадает (подстановочный знак, ожидаемое значение игнорируется) | $.request_id any |
notEmpty |
Значение непустое (не null, непустая строка/массив/объект) | $.user.email notEmpty |
empty |
Значение пустое (null, "", [] или {}) |
$.error empty |
matches |
Сопоставление с регулярным выражением | $.email matches "^.*@test\\.com$" |
Расширенные поля условий (только API)
Условия также поддерживают дополнительные поля (decode, sortArray, valueFromFile) при создании моков через REST API. Эти поля недоступны в визуальном конструкторе Web UI. Подробнее см. Справочник API.
Настройка условий в интерфейсе
- В Конструкторе прокрутите до раздела Условия
- Нажмите Добавить условие
- Выберите тип условия (body, header, queryParam)
- Введите ключ и ожидаемое значение
- Выберите действие проверки

Несколько условий на одном моке используют логику И (AND) — все условия должны совпасть для выбора данного ответа.
Импорт из OpenAPI
Если у вас уже есть спецификация OpenAPI (Swagger), Mockarty может автоматически сгенерировать моки для всех ваших эндпоинтов.
Шаг 1: Откройте Генератор
Нажмите Генератор в боковом меню.

Шаг 2: Загрузите спецификацию
Вы можете:
- Вставить URL вашей спецификации OpenAPI (JSON или YAML)
- Загрузить файл с компьютера
- Вставить содержимое непосредственно в редактор
Поддерживаемые форматы:
- OpenAPI 3.0 / 3.1 (JSON и YAML)
- Swagger 2.0 (JSON и YAML)
Шаг 3: Настройте параметры генерации
Выберите параметры генерации:
| Параметр | Описание |
|---|---|
| Пространство имен | Целевое пространство имен для сгенерированных моков |
| Использовать Faker | Замена примеров значений функциями Faker для динамических ответов |
| Генерировать условия | Создание условий из определений параметров |
| Префикс | Добавление префикса маршрута ко всем сгенерированным мокам |
Шаг 4: Генерация
Нажмите Сгенерировать моки. Mockarty создаст мок для каждого эндпоинта в вашей спецификации.

Шаг 5: Проверка и тестирование
Перейдите на страницу Моки, чтобы увидеть все сгенерированные моки. Каждый мок будет содержать:
- Корректный маршрут и HTTP-метод
- Тело ответа на основе определений схемы
- Соответствующие коды статусов
- Динамические значения на основе Faker (если включено)
Вы можете отредактировать любой сгенерированный мок в Конструкторе для дополнительной настройки. Не забывайте тестировать их через шаблон URL с пространством имен:
curl -s http://localhost:5770/stubs/sandbox/your-generated-route | jq
API-тестирование
Mockarty включает встроенный инструмент API-тестирования — считайте его Postman прямо внутри вашего мок-сервера. Вы можете тестировать моки, реальные API или и то, и другое.
Что такое API Tester?
API Tester позволяет:
- Отправлять HTTP-запросы на любой URL и видеть ответ
- Организовывать запросы в коллекции (как папки для ваших тестов)
- Писать тестовые скрипты на JavaScript для автоматической проверки ответов
- Использовать окружения для переключения между серверами (dev, staging, prod)
- Запускать целые коллекции разом для поиска регрессий
- Планировать запуски тестов по расписанию
Шаг 1: Создайте коллекцию
Коллекция — это просто группа связанных запросов. Думайте о ней как о наборе тестов.
- Перейдите в API Tester в боковом меню
- Нажмите Новая коллекция
- Задайте имя, например
Тесты API пользователей - Нажмите Создать

Шаг 2: Добавьте первый запрос
- Внутри коллекции нажмите Добавить запрос
- Заполните:
- Имя:
Получить пользователей(это просто метка для вас) - Метод:
GET(выберите из выпадающего списка) - URL:
http://localhost:5770/stubs/sandbox/api/users
- Имя:
- Нажмите Отправить, чтобы сразу попробовать

Ответ появится ниже: код статуса, время ответа, заголовки и JSON-тело.
Шаг 3: Добавьте POST-запрос
Давайте также добавим запрос, который отправляет данные:
- Снова нажмите Добавить запрос
- Заполните:
- Имя:
Создать пользователя - Метод:
POST - URL:
http://localhost:5770/stubs/sandbox/api/users
- Имя:
- Перейдите на вкладку Заголовки и добавьте:
- Ключ:
Content-Type, Значение:application/json
- Ключ:
- Перейдите на вкладку Тело, выберите raw и вставьте:
{
"name": "Alice",
"email": "alice@example.com"
}
- Нажмите Отправить

Шаг 4: Добавьте тестовые скрипты
Тестовые скрипты позволяют автоматически проверять корректность ответа. Перейдите на вкладку Тесты запроса Получить пользователей и вставьте:
// Проверяем, что получили 200 OK
mk.test("Статус 200", function() {
mk.response.to.have.status(200);
});
// Проверяем, что в ответе есть массив пользователей
mk.test("Содержит массив пользователей", function() {
var data = mk.response.json();
mk.expect(data.users).to.be.an('array');
mk.expect(data.users.length).to.be.greaterThan(0);
});
// Проверяем, что у каждого пользователя есть обязательные поля
mk.test("Пользователь имеет обязательные поля", function() {
var user = mk.response.json().users[0];
mk.expect(user).to.have.property('id');
mk.expect(user).to.have.property('name');
mk.expect(user).to.have.property('email');
});
Нажмите Отправить снова. Теперь под ответом вы увидите результаты тестов — зелёные галочки для пройденных, красные крестики для непройденных.

Шаг 5: Используйте окружения
Окружения позволяют менять URL без редактирования каждого запроса. Например:
- Нажмите на выпадающий список Окружения (верхний правый угол API Tester)
- Нажмите Управление окружениями → Добавить окружение
- Назовите его
Локальноеи добавьте переменную:- Переменная:
base_url, Значение:http://localhost:5770/stubs/sandbox
- Переменная:
- В URL запроса используйте:
{{base_url}}/api/users
Теперь при переключении окружений все запросы обновятся автоматически. Это удобно, когда нужно тестировать один и тот же API на разных серверах.
Шаг 6: Запустите всю коллекцию
Чтобы выполнить все запросы в коллекции разом:
- Нажмите Запустить коллекцию (кнопка воспроизведения на коллекции)
- Выберите, какие запросы включить
- Нажмите Запустить

Результаты покажут сводку: сколько тестов прошло, сколько провалилось и общее время выполнения.
Совет: Вы также можете планировать запуски коллекций (например, каждый час) из настроек коллекции. Это удобно для непрерывного мониторинга ваших API.
Pre-Request скрипты
Вы также можете писать скрипты, которые выполняются перед каждым запросом. Это полезно для генерации токенов аутентификации или подготовки тестовых данных:
// Генерируем случайный ID пользователя для этого запроса
var userId = Math.floor(Math.random() * 1000);
mk.environment.set("user_id", userId);
Затем используйте {{user_id}} в URL или теле запроса.
Запись трафика
Рекордер трафика перехватывает реальный HTTP-трафик и автоматически превращает его в моки. Вместо ручного создания моков вы можете направить рекордер на реальный API, запустить приложение и позволить Mockarty создать моки из реальных запросов и ответов.
Что такое Рекордер?
Представьте рекордер как «шпиона», который стоит между вашим приложением и реальным API. Он пропускает весь трафик без изменений, но записывает всё. После записи вы можете экспортировать захваченный трафик как:
- Моки — готовые к использованию в Mockarty
- Тестовые коллекции — для API-тестирования
- Скрипты нагрузочного тестирования — для нагрузочных тестов
Шаг 1: Запустите сессию записи
- Перейдите в Рекордер в боковом меню
- Нажмите Новая сессия
- Выберите режим Reverse Proxy (самый простой вариант)
- Введите Целевой URL — это реальный API, который вы хотите записать. Например:
https://jsonplaceholder.typicode.com - При желании укажите Порт прослушивания (напр.,
8085) или оставьте пустым для автоназначения - Нажмите Старт

Рекордер запущен. Он слушает на указанном порту и пересылает все запросы на целевой URL.
Шаг 2: Отправьте трафик через рекордер
Теперь направьте ваше приложение (или curl) на рекордер вместо реального API:
# Вместо вызова реального API:
# curl https://jsonplaceholder.typicode.com/users
# Вызываем через рекордер:
curl http://localhost:8085/users
Рекордер пересылает ваш запрос на jsonplaceholder.typicode.com, получает ответ и записывает и запрос, и ответ. Записи появляются в интерфейсе Рекордера в реальном времени.

Шаг 3: Просмотрите записанный трафик
Каждая запись показывает:
- Запрос: метод, URL, заголовки, тело
- Ответ: код статуса, заголовки, тело, тайминг
- Разбивка по времени: DNS, TLS-рукопожатие, время до первого байта
Нажмите на любую запись для просмотра полных деталей.
Шаг 4: Экспортируйте как моки
После записи достаточного количества трафика:
- Нажмите Стоп для завершения сессии
- Нажмите Экспорт в моки
- Выберите, какие записи экспортировать
- Выберите целевое пространство имён (напр.,
sandbox) - Нажмите Экспорт

Mockarty создаст моки из записанного трафика. Каждая пара запрос/ответ станет моком с правильным маршрутом, методом, заголовками и телом ответа.
Шаг 5: Добавьте сетевые эффекты (по желанию)
Рекордер может имитировать сетевые проблемы во время записи. Перед запуском сессии можно включить Токсины (Toxics):
| Токсин | Что делает |
|---|---|
| Задержка (Delay) | Добавляет фиксированную задержку (напр., 200мс) к каждому ответу |
| Джиттер (Jitter) | Добавляет случайное отклонение к задержке (напр., ±50мс) |
| Ограничение пропускной способности | Ограничивает скорость ответа (напр., 100 КБ/с) |
| Внедрение ошибок | Случайно возвращает ошибки (напр., 503 на 10% запросов) |
Это полезно для тестирования того, как ваше приложение справляется с медленными или ненадёжными API.
Режимы записи
| Режим | Как работает | Лучше всего для |
|---|---|---|
| Reverse Proxy | Вы указываете один целевой URL. Все запросы идут на этот URL. | Тестирование интеграции с одним API |
| Forward Proxy | Ваше приложение использует HTTP_PROXY=http://localhost:8085. Весь исходящий трафик идёт через рекордер. |
Захват трафика к нескольким API одновременно |
Нагрузочное тестирование
Mockarty включает встроенный движок нагрузочного тестирования, совместимый с k6-синтаксисом (базовая сборка, без расширений). Установка внешнего k6 не требуется. Вы пишете JavaScript-скрипты с использованием синтаксиса k6 ESM (import http from 'k6/http'), и Mockarty выполняет их, имитируя множество пользователей, одновременно обращающихся к вашему API. Основные глобальные функции k6 (check, sleep, group, fail) доступны нативно.
Что такое нагрузочное тестирование?
Нагрузочное тестирование отвечает на вопросы:
- Сколько запросов в секунду может обработать мой API?
- Что произойдёт, если 100 пользователей одновременно обратятся к API?
- Деградирует ли время ответа под нагрузкой?
Шаг 1: Откройте API Tester
Перейдите в API Tester в боковом меню. Нагрузочные тесты живут внутри коллекций API Tester — в той же рабочей области, где вы собираете обычные API-запросы.

Шаг 2: Создайте коллекцию Performance
- В левой панели API Tester переключитесь на группу протокола Performance (нагрузочные тесты в стиле k6).
- Нажмите + рядом с “Performance” и выберите Создать коллекцию.
- Введите имя коллекции (например,
my-first-load-test) и подтвердите.
Шаг 3: Создайте новый нагрузочный скрипт
Внутри новой Performance-коллекции нажмите кнопку + или откройте контекстное меню коллекции и выберите Новый запрос. Для Performance-коллекций это открывает промпт для имени скрипта (по умолчанию New Load Test). Введите имя и подтвердите.
Откроется редактор со стартовым шаблоном. Замените его на этот минимальный пример:
import http from 'k6/http';
import { check, sleep } from 'k6';
// Конфигурация: 10 виртуальных пользователей на 30 секунд
export const options = {
vus: 10,
duration: '30s',
};
// Эта функция выполняется один раз за итерацию для каждого виртуального пользователя
export default function () {
// Отправляем GET-запрос
const res = http.get('http://localhost:5770/stubs/sandbox/api/users');
// Проверяем, что ответ корректен
check(res, {
'статус 200': (r) => r.status === 200,
'время ответа < 500мс': (r) => r.timings.duration < 500,
});
// Ждём 1 секунду между итерациями (имитация реального пользователя)
sleep(1);
}
Что это делает: Создаёт 10 «виртуальных пользователей», каждый из которых непрерывно отправляет GET-запросы на ваш моковый эндпоинт в течение 30 секунд с паузой 1 секунда между запросами.
Шаг 4: Запустите тест
Нажмите Запустить. Вы увидите метрики в реальном времени:
- Запросов в секунду — как быстро отвечает ваш API
- Время ответа — перцентили p50, p95, p99
- Процент ошибок — доля неуспешных запросов
- Виртуальные пользователи — сколько имитированных пользователей активно

Шаг 5: Попробуйте тест с постепенным увеличением нагрузки
Более реалистичный тест постепенно увеличивает нагрузку. Замените options в скрипте:
export const options = {
stages: [
{ duration: '10s', target: 5 }, // Наращиваем до 5 пользователей за 10 секунд
{ duration: '20s', target: 20 }, // Наращиваем до 20 пользователей за 20 секунд
{ duration: '10s', target: 0 }, // Снижаем до 0 пользователей за 10 секунд
],
};
Тест начинается с 5 пользователей, постепенно увеличивается до 20, затем снижается обратно. Это даёт более чёткое представление о том, как API справляется с возрастающей нагрузкой.
Шаг 6: Протестируйте POST-эндпоинт
Нагрузочное тестирование — не только для GET-запросов. Вот как протестировать POST-эндпоинт:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 5,
duration: '20s',
};
export default function () {
const payload = JSON.stringify({
name: 'Тестовый пользователь ' + Math.random(),
email: 'test' + Math.random() + '@example.com',
});
const params = {
headers: { 'Content-Type': 'application/json' },
};
const res = http.post(
'http://localhost:5770/stubs/sandbox/api/users',
payload,
params
);
check(res, {
'статус 200 или 201': (r) => r.status === 200 || r.status === 201,
'время ответа < 1000мс': (r) => r.timings.duration < 1000,
});
sleep(0.5);
}
Шаг 7: Добавьте пороговые значения (критерии прохождения)
Добавьте пороговые значения для автоматической пометки теста как неуспешного при слишком медленной работе:
export const options = {
vus: 10,
duration: '30s',
thresholds: {
'http_req_duration': ['p(95)<500'], // 95% запросов должны быть быстрее 500мс
'http_req_failed': ['rate<0.01'], // Менее 1% запросов могут завершиться ошибкой
},
};
Если любой порог превышен, тест помечается как FAILED — полезно для CI/CD-пайплайнов, где нужно автоматически ловить деградацию производительности.
Когда использовать нагрузочное тестирование
| Сценарий | Пример скрипта |
|---|---|
| Smoke-тест | 1 VU, 10с — проверить, что эндпоинт вообще работает |
| Нагрузочный тест | 10-50 VU, 5мин — типичная ожидаемая нагрузка |
| Стресс-тест | 100+ VU с постепенным ростом — найти точку отказа |
| Spike-тест | Резкий скачок с 5 до 100 VU — проверить автомасштабирование |
| Soak-тест | 20 VU в течение 1 часа — найти утечки памяти и исчерпание ресурсов |
Фаззинг
Mockarty включает встроенный движок фаззинг-тестирования, который помогает обнаружить уязвимости и неожиданное поведение в ваших API. Фаззинг отправляет широкий спектр некорректных, неожиданных и вредоносных входных данных на ваши эндпоинты, чтобы проверить их реакцию.
Доступ к фаззеру
Нажмите Фаззинг в боковом меню, чтобы открыть интерфейс фаззинга.

Быстрый фаззинг
Самый быстрый способ начать — запустить быстрый фаззинг-тест:
- Введите Целевой URL — это может быть любой HTTP-эндпоинт (ваши моки, staging API или локальные сервисы)
- Выберите Категории полезных нагрузок для тестирования:
- SQL Injection — распространенные паттерны SQL-инъекций
- XSS — полезные нагрузки межсайтового скриптинга
- Path Traversal — попытки обхода директорий
- Command Injection — паттерны инъекций команд ОС
- Header Injection — манипуляции с HTTP-заголовками
- Overflow — тесты на переполнение буфера и большие входные данные
- Настройте метод запроса и необходимые заголовки (напр., токены аутентификации)
- Нажмите Начать фаззинг
Понимание результатов
По мере работы фаззера результаты появляются в реальном времени. Каждая находка включает:
- Уровень серьезности — Critical, High, Medium, Low или Info
- Полезная нагрузка — точные входные данные, вызвавшие находку
- Детали ответа — код статуса, тело ответа и время выполнения
- Категория — к какой категории полезных нагрузок относится находка

Пример: Фаззинг эндпоинта авторизации
Чтобы быстро протестировать эндпоинт авторизации на SQL-инъекции:
- Установите Целевой URL:
http://localhost:5770/stubs/sandbox/api/login - Установите Метод:
POST - Установите шаблон тела:
{"username": "{{payload}}", "password": "test"} - Выберите категорию SQL Injection
- Нажмите Начать фаззинг
Фаззер заменит {{payload}} различными строками SQL-инъекций и сообщит о любых подозрительных ответах (неожиданные коды статуса, утечка внутренних деталей в сообщениях об ошибках и т.д.).
Когда использовать фаззинг
- Перед деплоем — протестируйте ваши реальные API на распространенные уязвимости
- Валидация моков — убедитесь, что моки корректно обрабатывают граничные случаи
- Интеграция с CI/CD — запускайте фаззинг-тесты как часть пайплайна качества
- Аудит безопасности — систематическое тестирование валидации входных данных
Генерация автономного сервера
Некоторые протоколы (gRPC, Kafka, RabbitMQ, WebSocket, TCP, UDP) требуют сгенерированного автономного сервера для обслуживания трафика. Вы создаёте моки в веб-интерфейсе Mockarty, затем генерируете сервер, который принимает протокольные запросы и обращается к ноде Mockarty за резолвингом моков.
Генератор серверов также работает с прямыми протоколами (OpenAPI, GraphQL, SOAP, SSE, MCP) — полезно для создания автономных мок-серверов для CI/CD.
Примечание: Режим
-create-mocksгенератора серверов требует, чтобы функцияmockбыла включена в вашей лицензии.
Установка Server Generator
Скачайте mockarty-server-generator со страницы релизов на GitHub:
- macOS (Apple Silicon):
mockarty-server-generator-darwin-arm64 - macOS (Intel):
mockarty-server-generator-darwin-amd64 - Linux (x86_64):
mockarty-server-generator-linux-amd64
chmod +x mockarty-server-generator-darwin-arm64
Пример: Генерация из спецификации OpenAPI
./mockarty-server-generator openapi \
-input ./petstore.yaml \
-output server.go \
-package main \
-create-mocks \
-api-token mk_your_token \
-namespace sandbox
Это создаст полноценный Go-проект с:
- Всеми маршрутами из спецификации OpenAPI
- Моковыми ответами на основе определений схем
- Встроенным административным интерфейсом по адресу
/ui - Эндпоинтом проверки здоровья по адресу
/health/live - Вендорированными зависимостями (для сборки не нужен интернет)
Пример: Генерация gRPC-сервера
gRPC-моки создаются в веб-интерфейсе Mockarty (Конструктор → протокол gRPC), но для обслуживания gRPC-трафика необходим сгенерированный сервер:
# Генерация сервера + создание моков из proto-файлов
./mockarty-server-generator grpc \
-input ./proto/ \
-output server.go \
-package main \
-create-mocks \
-api-token mk_your_token \
-namespace sandbox \
-server-name my-grpc-service
Передавайте .proto файлы как есть — option go_package необязательна, любой её формат принимается, а опции для других языков (java_package, php_namespace и т.п.) вычищаются автоматически. Устанавливать protoc не нужно.
Пример: Генерация Kafka-сервера
./mockarty-server-generator kafka \
-input kafka-config.json \
-output kafka_server.go \
-package main \
-create-mocks \
-api-token mk_your_token \
-server-name my-kafka-server
Где kafka-config.json описывает топики, адрес брокера и группу потребителей. См. Руководство по генератору серверов для полного формата конфигурации.
Сборка и запуск сгенерированного сервера
Все сгенерированные серверы включают вендорированные зависимости и могут быть собраны полностью офлайн:
cd generated-server
go build -mod=vendor -o server .
# Запуск с необходимыми переменными окружения
HTTP_PORT=8080 \
HTTP_ADMIN_BASE_URL=http://localhost:5770 \
NAMESPACE=sandbox \
./server
Сгенерированный сервер подключается к ноде Mockarty (HTTP_ADMIN_BASE_URL) для резолвинга моков при каждом запросе. Нода Mockarty должна быть запущена и доступна.
Поддерживаемые типы серверов
Использование: mockarty-server-generator <тип> [флаги]
| Тип | Входные данные | Описание |
|---|---|---|
openapi |
OpenAPI/Swagger файл или URL | HTTP REST-сервер |
grpc |
Директория с .proto файлами |
gRPC-сервер (унарный + потоковый) |
mcp |
JSON-конфигурация или URL MCP-сервера | MCP-сервер |
graphql |
.graphql файл, URL или директория |
GraphQL-сервер |
soap |
WSDL файл или URL | SOAP-сервер |
sse |
JSON-конфигурация | Сервер Server-Sent Events |
kafka |
JSON-конфигурация | Kafka-адаптер — подключается как потребитель к реальному кластеру Apache Kafka и резолвит мок-сообщения через Mockarty |
rabbitmq |
JSON-конфигурация | RabbitMQ-адаптер — подключается как потребитель к реальному RabbitMQ и резолвит мок-сообщения через Mockarty |
socket |
JSON-конфигурация | WebSocket, TCP или UDP сервер |
smtp |
JSON-конфигурация | Мок SMTP-сервера |
AI-ассистент
Mockarty включает встроенного AI-ассистента, который может создавать моки, заполнять формы, управлять интерфейсом и отвечать на вопросы на естественном языке. AI-ассистент, внутренняя агентская сеть и MCP-сервер являются частью базового продукта — доступны каждому пользователю без необходимости специальной лицензии на функцию.
Единственная лицензируемая AI-функция — A2A (протокол Agent-to-Agent), позволяющая использовать вашу установку Mockarty как узел во внешних агентских сетях. Она управляется флагом a2a и не влияет на работу встроенного AI-ассистента.
Предварительные требования
AI-ассистенту необходимо:
- Настройка LLM-провайдера — администратор должен настроить хотя бы один LLM-профиль (серверный режим), либо вы можете использовать собственный API-ключ (клиентский режим — см. ниже).
Когда LLM-провайдер настроен, в правом нижнем углу каждой страницы веб-интерфейса появляется плавающая кнопка чата. Нажмите на неё, чтобы открыть чат. Также можно перейти в Чат с агентом в боковом меню для полноэкранного режима.

Серверный режим (настроенный администратором)
Рекомендуемый подход для команд. Администратор настраивает LLM-профили в Администрирование → Настройки LLM:
- Профили создаются и управляются централизованно — пользователи выбирают из доступных профилей в настройках чата
- Поддерживаемые провайдеры: OpenAI, Anthropic (Claude), OpenRouter, Google (Gemini), Mistral, Groq, Ollama (локальный), и Custom (любой OpenAI-совместимый эндпоинт)
- API-ключи хранятся безопасно на сервере
- Администратор также может настроить MCP-серверы для расширенных возможностей инструментов
Клиентский режим (свой API-ключ)
Если вы предпочитаете использовать собственный API-ключ, или если серверные профили не настроены:
- Откройте плавающий чат и нажмите на иконку Настройки (шестерёнка)
- Выберите провайдера (например, OpenAI, Anthropic, OpenRouter)
- Введите свой API-ключ и выберите модель
- Нажмите Сохранить
В клиентском режиме ваш API-ключ хранится в localStorage браузера, а запросы отправляются напрямую к LLM-провайдеру — сервер Mockarty никогда не видит ваш ключ. Сервер задействуется только для выполнения вызовов инструментов (создание моков, чтение данных и т.д.).
Что может AI-ассистент?
- Создание моков: «Создай GET /api/users endpoint, который возвращает список пользователей с фейковыми именами и email»
- Заполнение форм: «Установи код ответа 404 и добавь JSON-ответ с ошибкой»
- Управление интерфейсом: Ассистент может взаимодействовать с элементами страницы, заполнять поля и нажимать кнопки от вашего имени
- Объяснение функций: «Как использовать условия для сопоставления запросов по заголовку?»
- Отладка: «Почему мой мок не сопоставляется с запросами?»
Режим автоматического одобрения
По умолчанию каждый вызов инструмента AI требует ручного одобрения (Принять/Отклонить). Включите Auto Approve в выпадающем списке панели чата для автоматического выполнения вызовов инструментов без подтверждения.
Подробные инструкции по настройке LLM см. в Руководстве администратора и Руководстве по AI-функциям.
Устранение проблем
Распространённые ошибки при первом запуске:
| Симптом | Вероятная причина | Решение |
|---|---|---|
401 Unauthorized при обращении к API |
Отсутствует или неверный API-токен | Получите токен в разделе Настройки → API-токены и передавайте его в заголовке Authorization: Bearer <токен> или X-API-Key: <токен> |
403 invalid license при запуске |
Лицензионный ключ недействителен или истёк | Проверьте раздел Администрирование → Лицензия в веб-интерфейсе. Примените действующий лицензионный ключ или убедитесь, что пробный период не истёк |
/ui/ возвращает 404 или пустую страницу |
Сервер не успел полностью запуститься | Дождитесь, пока /health/live вернёт pass, и перезагрузите страницу |
Мок создан, но /stubs/... отдаёт 404 |
Неверное пространство имён или маршрут в URL | Проверьте пространство имён в пути URL: /stubs/{namespace}/{маршрут}. Убедитесь, что маршрут мока совпадает точно (включая начальный /) |
| Мок возвращает не тот ответ | Другой мок с большим приоритетом срабатывает первым | Проверьте Моки → Список на пересекающиеся маршруты и подправьте priority |
| Значения Faker не меняются | В payload указана обычная строка, а не шаблон |
Используйте формат "name": "$.fake.FirstName" (с префиксом $.) |
DB_DSN connection refused |
Контейнер Postgres не запущен или неверный порт | Проверьте docker ps и DSN в .env |
| Порт 5770 уже занят | Другой экземпляр Mockarty или Docker-контейнер занял порт | Выполните lsof -i :5770 и остановите конфликтующий процесс |
Если ни один пункт не подходит, проверьте логи сервера — структурированный вывод Zap содержит идентификатор запроса и цепочку ошибок для каждого неуспешного обращения.
Дальнейшие шаги
Теперь у вас есть работающий экземпляр Mockarty с первым моком. Вот куда двигаться дальше:
Узнайте больше
| Ресурс | Описание |
|---|---|
| Руководство по интерфейсу | Подробное руководство по веб-интерфейсу |
| Справочник API | Полная документация REST API для программного управления моками |
| Справочник Faker | Полный список всех функций Faker |
| Руководство по JsonPath | Продвинутое извлечение данных запроса и интерполяция ответов |
| Системы хранилищ | Global, Chain и Mock Store для мокирования с состоянием |
| AI-функции | Возможности AI-ассистента, настройка LLM и режимы чата |
| Руководство по генератору кода | Подробное руководство по CLI server-generator |
| Управление тест-кейсами | Организация кейсов в папках, шаги, ссылки на Jira/GitHub, ревью |
| Тест-планы | Оркестрация тестовых прогонов: функциональные + нагрузочные + фаззинг + хаос в одном DAG-воркфлоу |
| Контрактное тестирование | Валидация моков по спецификациям API и consumer-driven контрактные тесты |
| Хаос-инжиниринг | Внедрение сбоев в Kubernetes-кластеры для проверки устойчивости сервисов |
| Docker-развертывание | Продакшен-развертывание через Docker с PostgreSQL |
| Руководство по интеграциям | Настройка resolver-узлов и runner-агентов для масштабирования |
| Полезные функции и советы | Горячие клавиши, автокомплит, окружения и другие скрытые возможности |
Типичные следующие шаги
-
Настройте PostgreSQL для продакшена — SQLite отлично подходит для разработки, но PostgreSQL рекомендуется для командной работы и продакшен-окружений.
-
Создайте дополнительные пространства имен для организации моков по проектам или командам. Перейдите в Панель администратора для создания пространств имен и назначения пользователей.
-
Импортируйте существующие API с помощью Генератора OpenAPI или импорта HAR-файлов. Записывайте реальный API-трафик и создавайте моки автоматически.
-
Используйте AI-ассистента — откройте плавающий чат или перейдите в Чат с агентом в боковом меню и опишите, какие моки вам нужны, на естественном языке. Ассистент — часть базового продукта и доступен всем пользователям. Подробнее см. AI-функции.
-
Настройте интеграцию с CI/CD — используйте REST API для программного создания и управления моками в ваших тестовых пайплайнах.
-
Изучите режим прокси — пересылайте запросы к реальным сервисам, добавляя задержки, модифицируя ответы или логируя трафик.
-
Масштабируйтесь с resolver-узлами — разверните несколько resolver-узлов для высокодоступного обслуживания моков. Подробности в Руководстве по интеграциям.
-
Запустите фаззинг-тесты — используйте встроенный фаззер для тестирования ваших реальных API на уязвимости перед деплоем.
-
Контрактное тестирование — проверяйте, что ваши моки соответствуют реальным спецификациям API. Автоматически обнаруживайте ломающие изменения и дрифт API. Подробнее см. Контрактное тестирование.
-
Хаос-инжиниринг — внедряйте сбои (остановка подов, сетевые задержки, нагрузка на ресурсы) в Kubernetes-кластеры для проверки устойчивости ваших сервисов к отказам. Подробнее см. Хаос-инжиниринг.
-
Управление тест-кейсами — если ваша команда ведёт тест-кейсы вручную (таблицы, Confluence, TestRail), перейдите на встроенный TMS Mockarty. Организуйте кейсы в папках, добавляйте пошаговые инструкции, связывайте с задачами Jira/GitHub, отправляйте на ревью и запускайте автоматические прогоны. Подробнее см. Управление тест-кейсами.
-
Тест-планы — оркестрируйте весь регрессионный набор как DAG-воркфлоу: сначала функциональные тесты, потом нагрузочные, потом хаос — с гейтами, которые блокируют следующий шаг при неудаче предыдущего. Запускайте из CI/CD через API или cron. Подробнее см. Тест-планы.
Получение помощи
- Документация: Все руководства доступны в боковом меню в разделе Документация
- Проверка здоровья: Перейдите по адресу
http://localhost:5770/health/liveдля проверки работоспособности сервера - Swagger UI: Перейдите по адресу
http://localhost:5770/swagger/index.htmlдля интерактивной документации API - Логи: Проверяйте вывод консоли для получения структурированных логов с деталями запросов
Удачного мокирования!