Создание проекта (фреймворка) - Page-Object model (POM). Стек: Python, Selenium, Pytest
Хочешь получить практическое задание, основывающееся на этом видео?
Получи его здесь: okulik.by/item/pom-practice/
Мой курс по тестированию и автоматизации:
Занятия в группе: okulik.by/
Видеокурс с домашними заданиями: okulik.by/video/
------------------------------------------------
Для полноценной автоматизации тестирования все автотесты должны иметь какую-то структуру. В идеале, не должно быть сплошного копирования одного и того же кода. И в некоторых ситуациях, нужно делать так, чтобы тесты были понятны незнакомым с программированием коллегам. Всё это можно решить путем создания фреймворка, основанного на паттерне Page Object. В этом видео - основные его особенности.
--------------------------------------------
Мой Instagram: / tester.senior
Мой LinkedIn: / eugeneokulik
Telegram канал: t.me/SeniorTesterEugene
00:00 Привет
00:53 Простые тесты
03:03 Проблемы автотестов
05:23 Оптимизация тестов, создание структуры
08:20 Страницы - основа фреймворка
10:28 Описываем несуществующую страницу
12:19 Класс для каждой страницы
13:30 Описание элементов страницы
16:21 Тесты, основанные на фреймворке
27:43 Дополнительные способы описания элементов
30:02 Конечная структура
Пікірлер: 57
Вот таких тем мало по паттерну! Спасибо!
Спасибо за достаточно понятную, максимально структрурированную и полезную информацию
Спасибо за проделанную работу!
Огромное спасибо за проделанную работу !!!
Отличное видео, спасибо!
Спасибо за видео, очень помогло, тем более бесплатное)
Содержательно. После видео есть общая картина структуры🤝
@SeniorTester
3 ай бұрын
Класс!
Hello 👋 hello ,если не трудно можете пожалуйста залить это на гит хаб и скинуть ссылку .спасибо.
все четко, понятно, спасибо!
@SeniorTester
5 ай бұрын
Пользуйтесь)))
Спасибо! Очень полезный канал у вас! Поддержим крутой канал комментариями! ✌🤞
You best 👌 teacher and good luck 👍
Мощно :)
Отличное объяснение! Всё понятно, было бы здорово увидеть пример создания фреймворке общие, которые можно использовать для разных сайтов к примеру, либо фреймворк для самого pytest?
@SeniorTester
8 ай бұрын
Не думаю, что такое возможно. Все-таки фреймворк создаётся под конкретный сайт, с конкретными локаторами и последовательностями действий, которые возможны только для этого сайта
Only your video l understand 😊OOП и class 😊
Спасибо за видео. Подскажите, пожалуйста, а если в рамках одного теста будет использоваться несколько классов страниц (например, начали тест на одной странице, а закончили на другой), как в таком случае происходит инициализация объектов класса? Вначале в переменную присваиваем объект класса страницы main, делаем клик по переходу на вторую страницу с другим классом. В таком случае нужно опять создавать переменную и передавать в нее браузер?
@SeniorTester
2 ай бұрын
Ну, что-то около того, да.
Добрый день ! Подскажите, пожалуйста, почему может быть, если файл conftest лежит в корне проекта, то тест выдает ошибку из-за того, что фикстуры не найдены (импорт помогает, но должно без него ведь работать), а если файл conftest перенести в папку в тестами, то всё проходит корректно ? В чем причина, не могли бы вы мне подсказать ?
@SeniorTester
11 ай бұрын
Нужно смотреть на структуру проекта и на то как вы запускаете тесты. Можете мне написать в инстаграм- разберёмся
Подскажите, есть в каком -то видео автотест с обращением к API и проверкой результата?
@SeniorTester
8 ай бұрын
Есть обращение к апи и распечатывание результата kzread.info/dash/bejne/Z2eLxMaaaNnacbQ.html
@yuliapopova3273
8 ай бұрын
@@SeniorTester Как проверка возвращаемого результата в реальных тестах с API происходит, через assert или что-то другое используют?
@johnyelasto
8 ай бұрын
@@yuliapopova3273assert проверят вообще всё что хочет и используется постоянно
В моменте, когда ты в классе BasePage описываешь метод find 11:37 во время печати self.browser. на этом месте как-то можно сделать, чтобы выходили подсказки методов, как это реализовать?
@SeniorTester
4 ай бұрын
Это делается с помощью аннотаций Нужно импортнуть Webdriver из примерно отсюда from selenium.common.remote.webdriver import WebDriver (в точности пути не уверен, с телефона пишу) А потом добавить аннотацию в инит def __init__(driver: WebDriver) И тогда во всём этом классе и во всех дочерних появятся подсказки. Если что, пиши мне в телегу
Огромное спасибо за Ваш труд. Лучшие уроки по данной тематике. У меня вопрос: как при запуске нового теста оставаться на той же уже открытой странице?
@SeniorTester
4 ай бұрын
Нужно выбрать скоуп для фикстуры. Если нужно всегда оставаться на одной странице, то можно такие тесты расположить в отдельном файле и фикстуру прописать в этом файле и сделать ей scope='module'
@ramilhafiz6741
4 ай бұрын
@@SeniorTester спасибо!
Добрый день. Подскажите, плиз, это нормально если создать base_page, потом унаследовав ее сделать Login_page, а после все страницы наследовать от Login page, Что бы вызывать методы логина от текущих страниц и не создавать экземпляр класса логин в тесте?
@SeniorTester
Ай бұрын
А элементы страницы логина присутствуют на всех страницах, которые вы хотите от неё унаследовать? Нужно отталкиваться от цели. Возможно то, что вы хотите сделать, делается другими средствами
Возникает интересный эффект . Когда пишут browser.get - всё понятно , потому что так пишут во всех учебниках . А когда пишут simple_page - всё становится не понятным даже для того кто умеет программировать . Пойди разберись кто чего понапридумывал на своём проекте . У всех всё будет по разному .
@SeniorTester
4 ай бұрын
Ну, те, кто понапридумыаал уже в своём проекте, уже не изучают основы.
Не могу понять в чем проблема, не видел фикстуру я вылечил это закинув conftest в папку tests. теперь он у меня браузер failed “browser = кликнуть->зкрыть все работает , мистика
@SeniorTester
4 ай бұрын
Охх, ну тут бы на код посмотреть
@luckytima2315
4 ай бұрын
@@SeniorTester я не знаю как это работает, но на версий питона 3.8 все норм 😅
Привет, а путь к драйверу или сам драйвер где ?
@SeniorTester
3 ай бұрын
Уже полтора года как не нужно с ним заморачиваться. Селениум запилил функцию selenium manager, которая сама разруливает все заморочки с драйвером
Здравствуйте, в vs code в терминале возникает ошибка "ModuleNotFoundError: No module named 'pages'", при том что в импорте все само подтягивается и показывает что все хорошо. Не могу разобраться(
@SeniorTester
19 күн бұрын
А импортировали Pages или pages?
@SeniorTester
19 күн бұрын
А, это я ерунду спросил в прошлом коменте. Нужно видеть структуру проекта, чтобы сказать вам что не так
@zombiekiller666
18 күн бұрын
@@SeniorTester Скачал PyCharm и если запустить файл с тестом через Run, то все нормально запускается и ошибку не выдает, но если открыть файл теста через терминал используя "pytest -v", то опять вылазит ошибка как в vs code ModuleNotFoundError: No module named 'pages'.
@zombiekiller666
18 күн бұрын
@@SeniorTester структура как у вас
@SeniorTester
17 күн бұрын
Скорее всего, файл conftest у вас находится в папке с тестами, а не в корне проекта
Здравствуйте, это ж у вас PyCharm?
@SeniorTester
7 ай бұрын
Да, Pycharm
fixture 'browser' not found выдаёт
@SeniorTester
10 ай бұрын
Скорее всего, сбились настройки пайчарма. Напишите в сообщения в какую-нибудь мою соцсеть - разберемся
@rusmaverick95
9 ай бұрын
Создайте файл базового класса, создайте BaseClass и унаследуйте вашу фикстуру, затем используйте метод наследования BaseClass во все ваши тесты
Мы больше в fixture не пишем yield?
@SeniorTester
4 ай бұрын
Если нужны постусловия, то пишем, конечно
Весьма наглядно. Само видео требует тестов по проверке качества. К сожалению, в речи упоминаются ссылки, а по факту ссылки не появляются. Спасибо Вам, что делитесь своими знаниями, хоть, на мой взгляд, и весьма высокомерно по отношению к джунам.
@SeniorTester
7 ай бұрын
Да ладно вам. Вполне нормально ожидать, что джун тестировщик не будет знать ничего о программировании. А какие ссылки не отображаются? Я то-ли не нашёл, то-ли youtube кому-то их показывает, а кому-то нет.
@FimaMillston
7 ай бұрын
@@SeniorTester Проверю еще раз. Не показало, почему-то при просмотре. А по джунам - все ж когда-то джуны. По Вашим видео вполне можно начать разбиратся и понимать что и как. Спасибо!
а где вода минут на 15😁
@SeniorTester
3 ай бұрын
Блин, сорян, забыл. В следующий раз добавлю 😜