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 и версионируются вместе с релизом.
Куда дальше
- SDK guide — полный API-справочник по языкам.
- Allure-аннотации — метаданные отчётов.
- CLI command reference — что вне SDK.
- Быстрый старт — создайте и проверьте первый мок.