Документация SDK — быстрый старт

SDK — быстрый старт

В Mockarty есть first-class SDK для Go, Python и Java —
чтобы тесты жили рядом с кодом приложения, а не в отдельном DSL.
SDK позволяют:

  • Управлять Mockarty прямо из unit/integration-теста (создавать моки,
    гонять perf-скрипты, ассертить результаты).
  • Эмитить совместимые Allure 2 отчёты без
    CLI-раннера.
  • Использовать Mockarty как Pact-style
    верификатор контрактов внутри существующего тест-фреймворка.
  • Запускать CI-шаг против тест-контейнера Mockarty,
    который SDK поднимает и гасит — постоянный admin-узел не нужен.

Если вы предпочитаете писать тесты на JavaScript / TypeScript —
нагрузочный раннер уже принимает k6-совместимые скрипты (см.
Performance testing). SDK — для команд,
которые хотят статически-типизированный код тестов на том же языке,
что и тестируемый сервис.

Зачем SDK

  • Нативная интеграция с тест-фреймворком. go test, pytest,
    JUnit 5 гоняют Mockarty-ассерты так же, как любые другие.
  • Без DSL. IDE-автодополнение, привычный рефакторинг.
  • Программный setup моков. Сложные fixture’ы (матрицы комбинаций)
    на коде, а не в YAML.
  • CI без постоянного сервера. SDK может поднять тест-контейнер
    Mockarty на время прогона и погасить после — постоянный admin-узел не нужен.

Совместимость

Каждый релиз SDK привязан к версии admin-узла. SDK работает с
равным-или-новее сервером; на старых серверах новых endpoint’ов
может не быть. Уточняйте диапазон в CHANGELOG SDK.

SDK Имя модуля Минимум сервера
Go github.com/mockarty/mockarty-go 1.0+
Python mockarty (PyPI) 1.0+
Java ru.mockarty:mockarty-java (Maven) 1.0+

Go SDK

Установка

go get github.com/mockarty/mockarty-go@latest

Hello world

SDK — это типизированный REST-клиент. Подключите его к работающему Mockarty
(локальный admin-узел или тест-контейнер в CI) и
создавайте/читайте моки программно:

package mock_test

import (
    "context"
    "testing"

    mockarty "github.com/mockarty/mockarty-go"
)

func TestCheckoutStub(t *testing.T) {
    ctx := context.Background()

    // 1. Подключаемся к работающему Mockarty (по умолчанию localhost:5770).
    client := mockarty.NewClient("http://localhost:5770",
        mockarty.WithAPIKey("your-api-key"),
        mockarty.WithNamespace("sandbox"),
    )

    // 2. Собираем мок fluent-билдером.
    mock := mockarty.NewMockBuilder().
        ID("charge-ok").
        HTTP(func(h *mockarty.HTTPBuilder) {
            h.Route("/v1/charge").Method("POST")
        }).
        Response(func(r *mockarty.ResponseBuilder) {
            r.Status(200).JSONBody(map[string]any{"id": "ch_123", "status": "succeeded"})
        }).
        Build()

    // 3. Создаём на сервере; тестируемый код шлёт на stub-URL.
    if _, err := client.Mocks().Create(ctx, mock); err != nil {
        t.Fatal(err)
    }
    // код вызывает http://localhost:5770/stubs/sandbox/v1/charge ...
}

Полный гайд — SDK guide. Для сервера в CI без постоянного
admin-узла — тест-контейнер.

Python SDK

Установка

pip install mockarty

Hello world

from mockarty import MockartyClient, MockBuilder

def test_checkout_stub():
    # Подключаемся к работающему Mockarty (по умолчанию localhost:5770).
    with MockartyClient(base_url="http://localhost:5770", api_key="your-api-key") as client:
        mock = (
            MockBuilder.http("/v1/charge", "POST")
            .id("charge-ok")
            .respond(200, body={"id": "ch_123", "status": "succeeded"})
            .build()
        )
        client.mocks.create(mock)
        # код вызывает http://localhost:5770/stubs/sandbox/v1/charge ...
        client.mocks.delete("charge-ok")

Python SDK хорошо ложится в фикстуры pytest — оберните MockartyClient
в фикстуру и шарьте между тестами. Для сервера в CI — тест-контейнер.
Полный справочник — SDK guide.

Java SDK

Установка (Maven)

<dependency>
  <groupId>ru.mockarty</groupId>
  <artifactId>mockarty-junit5</artifactId>
  <version>0.3.0</version>
  <scope>test</scope>
</dependency>

Установка (Gradle)

testImplementation 'ru.mockarty:mockarty-junit5:0.3.0'

mockarty-junit5 транзитивно тянет базовый клиент (mockarty-java) — одной
зависимости хватает на весь пример ниже. Если JUnit 5 не используется,
подключайте ru.mockarty:mockarty-java напрямую.

Hello world

import ru.mockarty.MockartyClient;
import ru.mockarty.builder.MockBuilder;
import ru.mockarty.junit5.MockartyTest;
import org.junit.jupiter.api.Test;

// @MockartyTest подключается к работающему Mockarty (MOCKARTY_BASE_URL /
// MOCKARTY_API_KEY или параметры аннотации) и инжектит готовый клиент.
@MockartyTest(namespace = "sandbox", cleanupAfterEach = true)
class CheckoutTest {

    @Test
    void chargeStub(MockartyClient client) {
        client.mocks().create(
            MockBuilder.http("/v1/charge", "POST")
                .id("charge-ok")
                .respond(200, "{\"id\":\"ch_123\",\"status\":\"succeeded\"}")
                .build());
        // код вызывает <server>/stubs/sandbox/v1/charge ...
    }
}

Java SDK интегрируется с JUnit 5 через аннотацию @MockartyTest, которая
подключается к Mockarty (или, с расширением тест-контейнера, поднимает его) и
инжектит MockartyClient. Полный справочник — SDK guide.

Какой SDK под какой workflow

Хочу… Используйте…
Добавить моки в Go-integration-test Go SDK
Добавить моки в pytest-сьют Python SDK
Добавить моки в Spring Boot / JUnit 5 Java SDK
Перф-скрипт в runner-кластере k6-совместимый JS — см. Performance testing
Функциональные тесты с Mockarty-ассертами flow.mockarty.json манифесты — см. CLI user guide
Гнать Mockarty из CI без постоянного сервера Любой SDK + тест-контейнер
Allure-annotated результаты в общий дашборд Любой SDK + Allure-writer — см. Allure-аннотации

Чего в SDK НЕТ

By design, SDK покрывают только CI / scripting / end-user-test
поверхность. В SDK нет:

  • Админ-операций (управление пользователями, лицензией, audit-log
    экспорт, cluster-операции) — это Web UI / REST API.
  • Workspace-настроек.
  • Выпуска / отзыва токенов (только Web UI или admin REST).
  • Конфигурации webhook’ов / каналов.

Если для отсутствующего метода у вас есть юзкейс — заведите issue в
соответствующем SDK-репозитории. SDK расширяется по запросу, не
механически по REST-поверхности.

Исходники SDK

SDK Репозиторий
Go github.com/mockarty/mockarty-go
Python github.com/mockarty/mockarty-python
Java github.com/mockarty/mockarty-java

В каждом репозитории есть examples/ с запускаемыми сценариями.
Примеры трекают main SDK и версионируются вместе с релизом.

Куда дальше