Автоматическое изменение кода из Swagger

Всем здравствуйте!
Сейчас автоматизирую API проекта на Java и Rest Assured. В целом все получается.
Но у руководства возникли сомнения по поводу того, что код будет достаточно сложно поддерживать. Мол, любые изменения в конфигурации запросов, которые описаны в Swagger, будут вызывать сбои тестов.
Соответственно, мне поставили задачу узнать есть ли некий инструмент, который будет сам обновлять код при изменении параметров в Swagger. Своего рода прослойка. Что-то вроде: если есть изменения, то у тебя показывает что есть изменения.
Признаться честно, я очень слабо себе представляю как такое может существовать, а тем более быть реализовано. Но может из опытных людей кто что подскажет?
Мне кажется, что так или иначе все изменения придется прописывать в методах вручную

Почитал про какой-то сервис Apimatic, но до конца не могу понять как он работает. Может кто сталкивался с ним?

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

1 лайк

Если я правильно понял, вам нужно генерить клиент для REST API автоматически со Swagger. Вот эта библиотека должна вам помочь GitHub - swagger-api/swagger-codegen: swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.. Можно одной командой генерить все классы каждый раз когда вам нужно

2 лайка

Спасибо большое за наводку. Попытаюсь разобраться. Но пока мне это все кажется темным лесом(
Хотел спросить: а такие код-гены применяются повсеместно? Или есть проекты, в которых достаточно написать все руками с помощью rest-assured, к примеру?
API на проекте не большая

У Вас врядли такое получится чтобы тесты сами изменялись и подстраивались под новые свагер схемы, ведь Ваши тестовые данные к свагеру не привязаны.
Можно просто постараться уменьшить влияние изменений, все клиентские запросы вынести в helper/api - это позволит править клиентов лишь в одном месте
Однако останется открытым вопрос что делать если у Вас будут менятся имена или количество параметров в body или query ведь эти данные вероятно используются в каждом Вашем тестовом методе и напрямую завязаны на текущую структурю свагер схемы.
Можно попробовать перейти на управляемые данными тесты и использовать в клиентах какие то абстрактные параметры типа body, query, headers и создать своего рода маппинг (конфиг) который бы наполнял эти параметры тестовыми данными.
Боюсь что это может сильно переусложнить тесты и они будут уже не тестами, а отдельным приложением которое тоже прийдется тестировать :slight_smile:

1 лайк