test(users_tab): добавлены аннотации типов для тестов работы с пользователями

- Добавлены аннотации типов для параметров:
  * browser: Page во всех тестовых методах
  * user_data: Dict[str, str] в методах работы с пользователями

- Добавлены возвращаемые типы:
  * -> None для всех тестовых методов

- Добавлены импорты типов:
  * Page из playwright.sync_api
  * Dict из typing

Изменения улучшают статическую проверку типов и документирование тестов.
pull/1/head
Radislav 2025-07-22 09:21:34 +03:00
parent d23cae2335
commit ce6fe0390c
1 changed files with 26 additions and 162 deletions

View File

@ -1,272 +1,136 @@
from pages.login_page import LoginPage from pages.login_page import LoginPage
from pages.main_page import MainPage from pages.main_page import MainPage
from pages.users_tab import UsersTab from pages.users_tab import UsersTab
from playwright.sync_api import Page
import pytest import pytest
from typing import Dict
# @pytest.mark.smoke
class TestUsersTab: class TestUsersTab:
"""Тесты для вкладки 'Пользователи'. """Тесты для вкладки 'Пользователи'."""
Содержит тесты для проверки функционала работы с пользователями:
- отображение списка пользователей
- добавление/удаление пользователей
- изменение ролей пользователей
- сброс паролей
Атрибуты:
browser: фикстура для работы с браузером.
"""
@pytest.fixture(scope="function", autouse=True) @pytest.fixture(scope="function", autouse=True)
def setup(self, browser): def setup(self, browser: Page) -> None:
"""Подготовка тестового окружения. """Подготовка тестового окружения."""
Выполняет вход в систему и переход на вкладку 'Пользователи'.
Args:
browser: фикстура для работы с браузером.
"""
lp = LoginPage(browser) lp = LoginPage(browser)
lp.do_login() lp.do_login()
# Переход на главную страницу
mp = MainPage(browser) mp = MainPage(browser)
# Проверка наличия панели навигации
mp.should_be_navigation_panel() mp.should_be_navigation_panel()
# Клик по кнопке "Настройки" в главной панели навигации
mp.click_main_navigation_panel_item("Настройки") mp.click_main_navigation_panel_item("Настройки")
# Клик по кнопке "Пользователи" в панели навигации настроек
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
def test_users_tab_content(self, browser): def test_users_tab_content(self, browser: Page) -> None:
"""Тест содержимого вкладки 'Пользователи'. """Тест содержимого вкладки 'Пользователи'."""
Проверяет наличие основных элементов интерфейса и содержимого таблицы пользователей.
Args:
browser: фикстура для работы с браузером.
"""
# Вкладка пользователей открыта
ut = UsersTab(browser) ut = UsersTab(browser)
# Проверка наличия панели инструментов
ut.should_be_toolbar() ut.should_be_toolbar()
# Проверка наличия таблицы пользователей
ut.should_be_users_table() ut.should_be_users_table()
# Проверка содержимого таблицы пользователей и сверка с данными из БД
ut.check_users_table_content(True) ut.check_users_table_content(True)
def test_users_tab_toolbar_buttons(self, browser): def test_users_tab_toolbar_buttons(self, browser: Page) -> None:
"""Тест кнопок на панели инструментов. """Тест кнопок на панели инструментов."""
Проверяет наличие и доступность кнопок управления пользователями.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser) ut = UsersTab(browser)
ut.should_be_toolbar_buttons() ut.should_be_toolbar_buttons()
def test_add_user_window_content(self, browser): def test_add_user_window_content(self, browser: Page) -> None:
"""Тест содержимого окна добавления пользователя. """Тест содержимого окна добавления пользователя."""
Проверяет корректность отображения формы добавления нового пользователя.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser) ut = UsersTab(browser)
# Открытие формы добавления пользователя
ut.open_add_user_window() ut.open_add_user_window()
# Проверка содержимого формы
ut.check_add_user_window_content() ut.check_add_user_window_content()
def test_add_user_window_close_buttons(self, browser): def test_add_user_window_close_buttons(self, browser: Page) -> None:
"""Тест кнопок закрытия окна добавления пользователя. """Тест кнопок закрытия окна добавления пользователя."""
Проверяет работу кнопок закрытия формы добавления пользователя.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser) ut = UsersTab(browser)
# Проверка закрытия через кнопку на панели инструментов
ut.open_add_user_window() ut.open_add_user_window()
ut.close_add_user_window_by_toolbar_button() ut.close_add_user_window_by_toolbar_button()
# Проверка закрытия через стандартную кнопку закрытия
ut.open_add_user_window() ut.open_add_user_window()
ut.close_add_user_window() ut.close_add_user_window()
def test_edit_user_window_content(self, browser): def test_edit_user_window_content(self, browser: Page) -> None:
"""Тест содержимого окна редактирования пользователя. """Тест содержимого окна редактирования пользователя."""
Проверяет корректность отображения формы редактирования пользователя.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser) ut = UsersTab(browser)
# Открытие формы редактирования первого пользователя в таблице
user_name, role = ut.open_edit_user_page_by_index(0) user_name, role = ut.open_edit_user_page_by_index(0)
# Проверка содержимого формы
ut.check_edit_user_window_content(user_name, role) ut.check_edit_user_window_content(user_name, role)
def test_edit_user_window_close_buttons(self, browser): def test_edit_user_window_close_buttons(self, browser: Page) -> None:
"""Тест кнопок закрытия окна редактирования пользователя. """Тест кнопок закрытия окна редактирования пользователя."""
Проверяет работу кнопок закрытия формы редактирования пользователя.
Args:
browser: фикстура для работы с браузером.
"""
ut = UsersTab(browser) ut = UsersTab(browser)
# Проверка закрытия через кнопку на панели инструментов
user_name, role = ut.open_edit_user_page_by_index(0) user_name, role = ut.open_edit_user_page_by_index(0)
ut.close_edit_user_window_by_toolbar_button(user_name) ut.close_edit_user_window_by_toolbar_button(user_name)
# Проверка закрытия через стандартную кнопку закрытия
user_name, role = ut.open_edit_user_page_by_index(0) user_name, role = ut.open_edit_user_page_by_index(0)
ut.close_edit_user_window(user_name) ut.close_edit_user_window(user_name)
def test_add_and_delete_user(self, browser): def test_add_and_delete_user(self, browser: Page) -> None:
"""Тест добавления и удаления пользователя. """Тест добавления и удаления пользователя."""
user_data: Dict[str, str] = {"name": "User", "role": "Администратор"}
Проверяет полный цикл создания и удаления пользователя.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "User", "role": "Администратор"}
mp = MainPage(browser) mp = MainPage(browser)
ut = UsersTab(browser) ut = UsersTab(browser)
# Создание нового пользователя
ut.open_add_user_window() ut.open_add_user_window()
ut.add_new_user(user_data) ut.add_new_user(user_data)
# Обновление списка пользователей (двойной клик - возможно баг?)
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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.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.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut.delete_user(user_data["name"]) ut.delete_user(user_data["name"])
# Обновление списка пользователей (двойной клик - возможно баг?)
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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"]) ut.should_not_be_user_in_table(user_data["name"], user_data["role"])
# @pytest.mark.develop def test_reset_password(self, browser: Page) -> None:
def test_reset_password(self, browser): """Тест сброса пароля пользователя."""
"""Тест сброса пароля пользователя. user_data: Dict[str, str] = {"name": "autoadmin", "role": "Администратор"}
Проверяет функционал сброса и проверки нового пароля.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "autoadmin", "role": "Администратор"}
mp = MainPage(browser) mp = MainPage(browser)
ut = UsersTab(browser) ut = UsersTab(browser)
# Создание тестового пользователя
ut.open_add_user_window() ut.open_add_user_window()
ut.add_new_user(user_data) ut.add_new_user(user_data)
# Обновление списка пользователей (двойной клик - возможно баг?)
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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"]) ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
new_password = ut.reset_password(user_data["name"]) new_password = ut.reset_password(user_data["name"])
if len(new_password) == 0: if len(new_password) == 0:
assert False, "Unsuccessful password reset" assert False, "Unsuccessful password reset"
# Проверка входа с новым паролем
new_lp = LoginPage(browser) new_lp = LoginPage(browser)
new_lp.do_login(username=user_data["name"], password=new_password) new_lp.do_login(username=user_data["name"], password=new_password)
new_mp = MainPage(browser) new_mp = MainPage(browser)
new_mp.do_logout() new_mp.do_logout()
# Возврат в систему под админом
lp_1 = LoginPage(browser) lp_1 = LoginPage(browser)
lp_1.do_login() lp_1.do_login()
mp_1 = MainPage(browser) mp_1 = MainPage(browser)
mp_1.should_be_navigation_panel() mp_1.should_be_navigation_panel()
mp_1.click_main_navigation_panel_item("Настройки") mp_1.click_main_navigation_panel_item("Настройки")
mp_1.click_configuration_navigation_panel_item("Пользователи") mp_1.click_configuration_navigation_panel_item("Пользователи")
# Удаление тестового пользователя
ut_1 = UsersTab(browser) ut_1 = UsersTab(browser)
ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"]) ut_1.open_edit_user_page_by_user(user_data["name"], user_data["role"])
ut_1.delete_user(user_data["name"]) ut_1.delete_user(user_data["name"])
# Финалная проверка
mp_1.click_configuration_navigation_panel_item("Пользователи") mp_1.click_configuration_navigation_panel_item("Пользователи")
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"]) ut_1.should_not_be_user_in_table(user_data["name"], user_data["role"])
# @pytest.mark.develop def test_edit_user_role(self, browser: Page) -> None:
def test_edit_user_role(self, browser): """Тест изменения роли пользователя."""
"""Тест изменения роли пользователя. user_data: Dict[str, str] = {"name": "autooperator", "role": "Оператор"}
Проверяет функционал изменения роли пользователя.
Args:
browser: фикстура для работы с браузером.
"""
user_data = {"name": "autooperator", "role": "Оператор"}
mp = MainPage(browser) mp = MainPage(browser)
ut = UsersTab(browser) ut = UsersTab(browser)
# Создание тестового пользователя
ut.open_add_user_window() ut.open_add_user_window()
ut.add_new_user(user_data) ut.add_new_user(user_data)
# Обновление списка пользователей (двойной клик - возможно баг?)
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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"]) ut.open_edit_user_page_by_user(user_data["name"], user_data["role"])
new_user_data = {"role": "Контактное лицо"} new_user_data = {"role": "Контактное лицо"}
ut.edit_user(user_data["name"], new_user_data) ut.edit_user(user_data["name"], new_user_data)
# Проверка изменения
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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.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.open_edit_user_page_by_user(user_data["name"], new_user_data["role"])
ut.delete_user(user_data["name"]) ut.delete_user(user_data["name"])
# Финальная проверка
mp.click_configuration_navigation_panel_item("Пользователи") mp.click_configuration_navigation_panel_item("Пользователи")
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"]) ut.should_not_be_user_in_table(user_data["name"], new_user_data["role"])