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

api
rest-assured
swagger
java
Теги: #<Tag:0x00007fedbfb17650> #<Tag:0x00007fedbfb17420> #<Tag:0x00007fedbfb17088> #<Tag:0x00007fedbfb16ea8>

(Alex) #1

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


(Alex) #2

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


(Александр Ефимов) #3

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


(Yury Dyagilev) #4

Если я правильно понял, вам нужно генерить клиент для REST API автоматически со Swagger. Вот эта библиотека должна вам помочь https://github.com/swagger-api/swagger-codegen. Можно одной командой генерить все классы каждый раз когда вам нужно


(Alex) #5

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


(Dmitri Komarist) #6

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