Python мануфактураJavaDesign Patterns для автоматизаторів

Java · Основний курс · 5:20–11:53

`BaseController` і порівняння лінійного та controller-based тесту

Спільна RestAssured configuration переноситься в abstract `BaseController`. Бібліотека RestAssured має бути доступною main-коду, тому dependency переводиться з test-only у `implementation`. Controllers успадковують base class і працюють з protected request specification. Логін, пошук проєкту і створення suite розносяться між `AuthController`, `ProjectController` і `SuiteController`; controllers та DTO розкладаються в окремі packages. Для порівняння в тому самому class залишається початковий «брудний» сценарій і додається окремий MVC-варіант. Перенесення operations в окремі classes дає змогу розширювати кожен resource без розростання одного test class.

API-автоматизація: MVC і Jackson →

Java · Advanced: API-автоматизація · 30:00–40:00

Вибір Java client library

Java generator може будувати client на різних HTTP libraries. Відео експериментує з RestTemplate та RestAssured, пояснюючи, що library choice впливає на generated signatures, exceptions і dependencies. Немає універсального найкращого client. Для tests важливі controllable requests, raw negative responses, logging/masking і compatibility з project stack.

Кодогенерація через OpenAPI Generator →

Java · Advanced: API-автоматизація · 1:20:00–1:30:00

Виділення API client і resource methods

Shared `RequestSpecification` виноситься в client/configuration method, а resource operations — у methods з domain names, наприклад create/find pet. Тест залишає сценарій і assertions, transport details переходять в client. Рефакторинг починається після working example, а не з speculative framework. Назва class може бути `Client`, `Controller` чи `Service`; важливіше, щоб він відповідав одному resource/service boundary.

API: що тестувати та як написати перший тест →

Java · Advanced: API-автоматизація · 1:30:00–1:50:00

Де закінчується controller

Автор порівнює `Controller`, `Service` і `API` naming. Назва вторинна; головне, щоб class не змішував domains і не ховав assertions. Не кожен endpoint потребує окремого class. Почати варто з одного resource client і розділяти, коли поточний class вже має кілька незалежних responsibilities.

POJO, Jackson і контролери →
Запитати в чаті про «API-client» →