9. Classes | Python documentation
Описує binding instance methods, self convention і межі private variables у Python.
__init__, self, page та принципи ООП → Першоджерело ↗Відеобібліотека
Пошук у нотатках курсу Java з переходом на потрібну секунду.
Описує binding instance methods, self convention і межі private variables у Python.
__init__, self, page та принципи ООП → Першоджерело ↗Низькорівневий канал Playwright для надсилання raw Chrome DevTools Protocol methods; доступний лише для Chromium-based browsers.
Як Playwright взаємодіє з браузером через протокол →Class name позначає page, methods описують actions, locators зберігаються в одному місці, а open завершується мінімальною readiness check.
Після open() test продовжується лише коли heading Sign in видимий; fill_email() приховує locator details від test code.
Зіставте class name з route, visible heading і product vocabulary.
Позначте methods, які маскують click як open, або змішують action і assertion.
Перейменуйте лише підтверджені невідповідності та запишіть два project rules у README.
Один короткий diff і два naming rules, які прибирають повторну суперечку на code review.
`build.gradle` описує збірку та залежності, Gradle Wrapper дає відтворюваний запуск, а в `src` створюються source sets `main` і `test`. Службова логіка зберігатиметься в `src/main/java`, а тести — в `src/test/java`. Базова ієрархія Java-коду: package містить class, class містить fields і methods, а локальні variables можуть жити всередині methods. Назва `public` class має збігатися з іменем файлу; безпечне перейменування робиться через IDE refactoring.
`GET`, `POST`, `PUT`, `DELETE` мають різні очікувані effects. `200 OK`, `201 Created`, `202 Accepted`, `204 No Content`, client errors `4xx` і server errors `5xx` не слід згортати в одне «працює/не працює». Особлива увага приділяється `PUT`, де behavior для nonexistent resource залежить від contract. Автотест має кодувати домовленість конкретного API, а не універсально вважати один code правильним для всіх APIs.
Projects endpoint повертає колекцію проєктів із title та id. Для прикладу обирається проєкт Manufacture Light, у межах якого потрібно створити test suite. Початковий лінійний сценарій розділяється на methods для login, projects і suites. Кожен method отримує тільки потрібні йому дані: token, project name/id та payload. Це підготовка до винесення API-логіки в controllers.
Низькорівневі selector, collection і parsing operations виносяться в methods на кшталт `countOfProjectsShouldBeEqualTo`, `countOfTestCasesShouldBeEqualTo` та перевірку total count. Test method після цього показує намір сценарію й очікувані числа, а не деталі DOM. Параметри `expectedSize` або `expectedCount` дають використовувати ті самі перевірки з різними даними.
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.
Універсальний `parseIntegerFromString` переноситься до окремого utilities package як `public static` method і підключається static import. Поруч створюється parser для `double`, щоб обробляти UI-значення на кшталт coverage з десятковою частиною. Відео також пояснює різницю між primitive `int` і reference type `Integer`, статичними methods та methods, які повертають значення замість `void`.
Рекомендований порядок у класі: test data, самі tests, а потім допоміжні methods. Спершу можна залишати methods біля конкретного test class, побачити реальне дублювання й лише тоді ділити UI на Page Objects або components. `Boolean.parseBoolean` і `assertEquals(expected, actual)` показані як ще один приклад перетворення тексту з UI; практична задача — написати три-чотири читабельні tests, винести secrets у `.env` і потренувати IDE refactorings.
Object equality не підходить для всіх API checks. Dates потребують before/after/close-to comparison, floating-point — tolerance, collections — contains/order/filter semantics, nested objects — field-level comparison. AssertJ починає з `assertThat(actual)` і пропонує methods відповідно до actual type. Це зменшує custom comparison code і робить expected behavior видимим у test.
`baseUrl` переноситься в тіло класу, після чого його можуть використовувати кілька test methods. IntelliJ IDEA підсвічує помилки та зайві конструкції, пропонує quick fixes через `Alt+Enter` або `Option+Enter` і допомагає спростити ініціалізацію. Жовті підказки варто читати, але застосовувати лише після розуміння запропонованої зміни.
Assertion generator може створити fluent `hasName`, `hasCode` та інші methods з model classes. Розглядаються hard і soft assertions, package include/exclude та custom templates. Live demo виявляє plugin/version/import failures. Урок: generated assertion code потрібно компілювати у clean build і review, а не вважати generator output правильним за замовчуванням.