From ce6fe0390c422e5d64472e2b4b96fbd7cea4a783 Mon Sep 17 00:00:00 2001 From: Radislav Date: Tue, 22 Jul 2025 09:21:34 +0300 Subject: [PATCH] =?UTF-8?q?test(users=5Ftab):=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B0=D0=BD=D0=BD=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20=D1=82=D0=B8=D0=BF=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= =?UTF-8?q?=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлены аннотации типов для параметров: * browser: Page во всех тестовых методах * user_data: Dict[str, str] в методах работы с пользователями - Добавлены возвращаемые типы: * -> None для всех тестовых методов - Добавлены импорты типов: * Page из playwright.sync_api * Dict из typing Изменения улучшают статическую проверку типов и документирование тестов. --- tests/e2e/test_users_tab.py | 188 +++++------------------------------- 1 file changed, 26 insertions(+), 162 deletions(-) diff --git a/tests/e2e/test_users_tab.py b/tests/e2e/test_users_tab.py index 5a26724..d762886 100644 --- a/tests/e2e/test_users_tab.py +++ b/tests/e2e/test_users_tab.py @@ -1,272 +1,136 @@ from pages.login_page import LoginPage from pages.main_page import MainPage from pages.users_tab import UsersTab - +from playwright.sync_api import Page import pytest +from typing import Dict -# @pytest.mark.smoke class TestUsersTab: - """Тесты для вкладки 'Пользователи'. - - Содержит тесты для проверки функционала работы с пользователями: - - отображение списка пользователей - - добавление/удаление пользователей - - изменение ролей пользователей - - сброс паролей - - Атрибуты: - browser: фикстура для работы с браузером. - """ + """Тесты для вкладки 'Пользователи'.""" @pytest.fixture(scope="function", autouse=True) - def setup(self, browser): - """Подготовка тестового окружения. - - Выполняет вход в систему и переход на вкладку 'Пользователи'. - - Args: - browser: фикстура для работы с браузером. - """ + def setup(self, browser: Page) -> None: + """Подготовка тестового окружения.""" lp = LoginPage(browser) lp.do_login() - # Переход на главную страницу mp = MainPage(browser) - - # Проверка наличия панели навигации mp.should_be_navigation_panel() - - # Клик по кнопке "Настройки" в главной панели навигации mp.click_main_navigation_panel_item("Настройки") - - # Клик по кнопке "Пользователи" в панели навигации настроек mp.click_configuration_navigation_panel_item("Пользователи") - def test_users_tab_content(self, browser): - """Тест содержимого вкладки 'Пользователи'. - - Проверяет наличие основных элементов интерфейса и содержимого таблицы пользователей. - - Args: - browser: фикстура для работы с браузером. - """ - # Вкладка пользователей открыта + def test_users_tab_content(self, browser: Page) -> None: + """Тест содержимого вкладки 'Пользователи'.""" ut = UsersTab(browser) - - # Проверка наличия панели инструментов ut.should_be_toolbar() - - # Проверка наличия таблицы пользователей ut.should_be_users_table() - - # Проверка содержимого таблицы пользователей и сверка с данными из БД ut.check_users_table_content(True) - def test_users_tab_toolbar_buttons(self, browser): - """Тест кнопок на панели инструментов. - - Проверяет наличие и доступность кнопок управления пользователями. - - Args: - browser: фикстура для работы с браузером. - """ + def test_users_tab_toolbar_buttons(self, browser: Page) -> None: + """Тест кнопок на панели инструментов.""" ut = UsersTab(browser) ut.should_be_toolbar_buttons() - def test_add_user_window_content(self, browser): - """Тест содержимого окна добавления пользователя. - - Проверяет корректность отображения формы добавления нового пользователя. - - Args: - browser: фикстура для работы с браузером. - """ + def test_add_user_window_content(self, browser: Page) -> None: + """Тест содержимого окна добавления пользователя.""" ut = UsersTab(browser) - - # Открытие формы добавления пользователя ut.open_add_user_window() - - # Проверка содержимого формы ut.check_add_user_window_content() - def test_add_user_window_close_buttons(self, browser): - """Тест кнопок закрытия окна добавления пользователя. - - Проверяет работу кнопок закрытия формы добавления пользователя. - - Args: - browser: фикстура для работы с браузером. - """ + def test_add_user_window_close_buttons(self, browser: Page) -> None: + """Тест кнопок закрытия окна добавления пользователя.""" ut = UsersTab(browser) - - # Проверка закрытия через кнопку на панели инструментов ut.open_add_user_window() ut.close_add_user_window_by_toolbar_button() - - # Проверка закрытия через стандартную кнопку закрытия ut.open_add_user_window() ut.close_add_user_window() - def test_edit_user_window_content(self, browser): - """Тест содержимого окна редактирования пользователя. - - Проверяет корректность отображения формы редактирования пользователя. - - Args: - browser: фикстура для работы с браузером. - """ + def test_edit_user_window_content(self, browser: Page) -> None: + """Тест содержимого окна редактирования пользователя.""" ut = UsersTab(browser) - - # Открытие формы редактирования первого пользователя в таблице user_name, role = ut.open_edit_user_page_by_index(0) - - # Проверка содержимого формы ut.check_edit_user_window_content(user_name, role) - def test_edit_user_window_close_buttons(self, browser): - """Тест кнопок закрытия окна редактирования пользователя. - - Проверяет работу кнопок закрытия формы редактирования пользователя. - - Args: - browser: фикстура для работы с браузером. - """ + def test_edit_user_window_close_buttons(self, browser: Page) -> None: + """Тест кнопок закрытия окна редактирования пользователя.""" ut = UsersTab(browser) - - # Проверка закрытия через кнопку на панели инструментов user_name, role = ut.open_edit_user_page_by_index(0) ut.close_edit_user_window_by_toolbar_button(user_name) - - # Проверка закрытия через стандартную кнопку закрытия user_name, role = ut.open_edit_user_page_by_index(0) ut.close_edit_user_window(user_name) - def test_add_and_delete_user(self, browser): - """Тест добавления и удаления пользователя. - - Проверяет полный цикл создания и удаления пользователя. - - Args: - browser: фикстура для работы с браузером. - """ - user_data = {"name": "User", "role": "Администратор"} + def test_add_and_delete_user(self, browser: Page) -> None: + """Тест добавления и удаления пользователя.""" + user_data: Dict[str, str] = {"name": "User", "role": "Администратор"} mp = MainPage(browser) ut = UsersTab(browser) - # Создание нового пользователя ut.open_add_user_window() ut.add_new_user(user_data) - - # Обновление списка пользователей (двойной клик - возможно баг?) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") - - # Проверка наличия пользователя в таблице ut.should_be_user_in_table(user_data["name"], user_data["role"]) - - # Удаление пользователя ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) ut.delete_user(user_data["name"]) - - # Обновление списка пользователей (двойной клик - возможно баг?) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") - - # Проверка отсутствия пользователя в таблице ut.should_not_be_user_in_table(user_data["name"], user_data["role"]) - # @pytest.mark.develop - def test_reset_password(self, browser): - """Тест сброса пароля пользователя. - - Проверяет функционал сброса и проверки нового пароля. - - Args: - browser: фикстура для работы с браузером. - """ - user_data = {"name": "autoadmin", "role": "Администратор"} + def test_reset_password(self, browser: Page) -> None: + """Тест сброса пароля пользователя.""" + user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор"} mp = MainPage(browser) ut = UsersTab(browser) - # Создание тестового пользователя ut.open_add_user_window() ut.add_new_user(user_data) - - # Обновление списка пользователей (двойной клик - возможно баг?) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") - - # Сброс пароля ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) new_password = ut.reset_password(user_data["name"]) if len(new_password) == 0: assert False, "Unsuccessful password reset" - # Проверка входа с новым паролем new_lp = LoginPage(browser) new_lp.do_login(username=user_data["name"], password=new_password) new_mp = MainPage(browser) new_mp.do_logout() - - # Возврат в систему под админом lp_1 = LoginPage(browser) lp_1.do_login() mp_1 = MainPage(browser) mp_1.should_be_navigation_panel() mp_1.click_main_navigation_panel_item("Настройки") mp_1.click_configuration_navigation_panel_item("Пользователи") - - # Удаление тестового пользователя ut_1 = UsersTab(browser) ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"]) ut_1.delete_user(user_data["name"]) - - # Финалная проверка mp_1.click_configuration_navigation_panel_item("Пользователи") mp_1.click_configuration_navigation_panel_item("Пользователи") ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"]) - # @pytest.mark.develop - def test_edit_user_role(self, browser): - """Тест изменения роли пользователя. - - Проверяет функционал изменения роли пользователя. - - Args: - browser: фикстура для работы с браузером. - """ - user_data = {"name": "autooperator", "role": "Оператор"} + def test_edit_user_role(self, browser: Page) -> None: + """Тест изменения роли пользователя.""" + user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор"} mp = MainPage(browser) ut = UsersTab(browser) - # Создание тестового пользователя ut.open_add_user_window() ut.add_new_user(user_data) - - # Обновление списка пользователей (двойной клик - возможно баг?) mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") - - # Изменение роли пользователя ut.open_edit_user_page_by_user(user_data["name"], user_data["role"]) new_user_data = {"role": "Контактное лицо"} ut.edit_user(user_data["name"], new_user_data) - - # Проверка изменения mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.should_be_user_in_table(user_data["name"], new_user_data["role"]) - - # Удаление тестового пользователя ut.open_edit_user_page_by_user(user_data["name"], new_user_data["role"]) ut.delete_user(user_data["name"]) - - # Финальная проверка mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи") ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"]) \ No newline at end of file