-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add POM and main page tests #19
base: main
Are you sure you want to change the base?
Conversation
…/aqa_python into Zoe_mainpage_UI
def test_is_logo_visible(driver): | ||
page = MainPage(driver) | ||
page.open_main_page() | ||
page.logo_visibility() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Так как это проверка, лучше назвать метод check_logo_is_visible
test_main.py
Outdated
def test_about_us_clickable(driver): | ||
page = MainPage(driver) | ||
page.open_main_page() | ||
page.hover_over_element(MainPageLocators.ABOUT_US_BUTTON) | ||
page.is_element_clickable_after_hover(MainPageLocators.ABOUT_US_BUTTON) | ||
|
||
|
||
def test_tasks_button_visible(driver): | ||
page = MainPage(driver) | ||
page.open_main_page() | ||
page.hover_over_element(MainPageLocators.TASKS_BUTTON) | ||
page.is_element_clickable_after_hover(MainPageLocators.ABOUT_US_BUTTON) | ||
|
||
|
||
def test_enter_clickable(driver): | ||
page = MainPage(driver) | ||
page.open_main_page() | ||
page.hover_over_element(MainPageLocators.REG_BUTTON) | ||
page.is_element_clickable_after_hover(MainPageLocators.REG_BUTTON) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В этих тестах одинаковый код с разными аргументами. Круче всего было бы сделать вместо трех тестов один с разными данными, используя parametrize
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила это и другие моменты
pages/main_page.py
Outdated
class MainPage(BasePage): | ||
|
||
def open_main_page(self): | ||
self.driver.get(MAIN_PAGE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А для чего у нас в BasePage
существует метод open
, если здесь мы отдельным методом реализуем открытие страницы?
…ing, add parametrization
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не то, чтобы это было критично, но чем меньше раз в коде пишется одно и то же, тем меньше шансов словить косяки при последующей поддержке этого кода.
И еще, можно убрать инициализацию классов из тестов, перенеся ее в conftest. Например в конфтесте можно создать фикстуру
def main_page(driver):
return MainPage(driver)
Только нужно импортнуть этот класс в конфтест
И тогда тест выглядел бы так:
def test_check_logo_visibility(main_page):
main_page.open()
main_page.logo_visibility()
Это делает тесты чище и меньше импортов будет в файле.
Эти все штуки можно сделать прямо сейчас, при желании, или можете создать задачу на внесение таких изменений и сделать это потом. А можете вообще решить, что вам это не нужно.
test_main.py
Outdated
|
||
@pytest.mark.parametrize('button', MainPageLocators.HEADER_BUTTONS) | ||
def test_check_header_buttons_clickability(driver, button): | ||
page = MainPage(driver, MAIN_PAGE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
У main_page всегда будет один и тот же URL, можно в классе MainPage сразу инициализировать родительский класс с этим урлом и не пришлось бы каждый раз это писать в тесте.
Вот такое можно добавить в класс MainPage:
def __init__(self, driver):
super().__init__(driver, MAIN_PAGE)
Ну, само собой, импортнуть эту константу нужно будет в этот файл.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тогда здесь в тесте будет
page = MainPage(driver)
No description provided.