Search
Write a publication
Pull to refresh

API Автотесты

Ситуация: два подхода к валидации API-ответов — я использую Pydantic, считая его удобным, многофункциональным, проще поддерживаемым и современным. Мой коллега предпочитает jsonschema, не видя причин для смены, считая что он может всё тоже самое. Противостояние на совместном проекте привело к разделению зон покрытия: я взял eshop, он — pim. Я неистово топлю за Pydantic но не могу убедить коллегу...

Не тратя время на исследования, ИИ выдал базу:

  1. Удобство и поддержка — pydantic упрощает модели через аннотации, делая обновления быстрыми. jsonschema требует ручных генераций схем, что трудоемко.

  2. Производительность — pydantic в 10 раз быстрее на больших данных благодаря Rust. jsonschema медленнее при вложенных структурах.

  3. Гибкость — pydantic предлагает кастомные валидаторы и интеграцию с OpenAPI. jsonschema универсален для кросс-платформ, но кастомизация сложнее.

  4. Интеграция с тестами — pydantic легко работает с PyTest и Allure. jsonschema требует настройки.

  5. Обучение — pydantic имеет сильное сообщество (360 млн скачиваний) и документацию. jsonschema требует знания JSON-стандарта.

Вывод: Pydantic выигрывает в большинстве ситуаций, если не сказать что во всех.

Безусловно, брать ответ ИИ не рассмотрев его под лупой, на сегодняшний день, это глупо: он далеко не всегда учитывает контекст, реальный опыт и множество других факторов которые могут повлиять на правильное решение.

Очевидно что я не смогу убедить коллегу, и пока мы на низком старте, у меня не будет наглядных примеров по преимуществу. А когда они появятся будет уже слишком поздно - что в целом меня конечно не особо расстраивает.

А может я не прав?

Приглашаю к обсуждению:

  1. Какой инструмент вы предпочитаете для валидации API в автотестах и почему?

  2. Бывали ли случаи, когда смешивание Pydantic и jsonschema вызвало проблемы? Или наоборот, помогало?

  3. Стоит ли разделять подходы в одном проекте, как это сделали мы?

Возможно я не так понял формат постов, т.к. ожидал тут увидеть возможность голосования как в статьях. Принять и простить)

Tags:
0
Comments1

Articles