test(users_tab): добавлены аннотации типов для тестов работы с пользователями
- Добавлены аннотации типов для параметров: * browser: Page во всех тестовых методах * user_data: Dict[str, str] в методах работы с пользователями - Добавлены возвращаемые типы: * -> None для всех тестовых методов - Добавлены импорты типов: * Page из playwright.sync_api * Dict из typing Изменения улучшают статическую проверку типов и документирование тестов.pull/1/head
parent
d23cae2335
commit
ce6fe0390c
|
|
@ -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"])
|
||||||
Loading…
Reference in New Issue