106 lines
3 KiB
Python
106 lines
3 KiB
Python
import pytest
|
||
import logging
|
||
from config.settings import settings
|
||
from config.api_config import api_config
|
||
from config.ui_config import ui_config
|
||
from fixtures.data_fixtures import *
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
# Вывод информации о конфигурации
|
||
logger.info("=" * 50)
|
||
logger.info(f"Running tests in {settings.ENV} environment")
|
||
logger.info(f"API Base URL: {api_config.API_BASE_URL}")
|
||
logger.info(f"UI Base URL: {ui_config.UI_BASE_URL}")
|
||
logger.info("=" * 50)
|
||
|
||
def pytest_addoption(parser):
|
||
"""Добавление кастомных опций командной строки"""
|
||
parser.addoption(
|
||
"--env-file",
|
||
action="store",
|
||
default=None,
|
||
help="Path to custom .env file"
|
||
)
|
||
parser.addoption(
|
||
"--browser",
|
||
action="store",
|
||
default=ui_config.BROWSER_NAME,
|
||
help="Browser to use for UI tests"
|
||
)
|
||
parser.addoption(
|
||
"--headless",
|
||
action="store_true",
|
||
default=ui_config.BROWSER_HEADLESS,
|
||
help="Run browser in headless mode"
|
||
)
|
||
parser.addoption(
|
||
"--api-url",
|
||
action="store",
|
||
default=api_config.API_BASE_URL,
|
||
help="Override API base URL"
|
||
)
|
||
parser.addoption(
|
||
"--ui-url",
|
||
action="store",
|
||
default=ui_config.UI_BASE_URL,
|
||
help="Override UI base URL"
|
||
)
|
||
|
||
def pytest_configure(config):
|
||
"""Конфигурация pytest"""
|
||
# Переопределение настроек из командной строки
|
||
if config.getoption("--api-url"):
|
||
api_config.API_BASE_URL = config.getoption("--api-url")
|
||
|
||
if config.getoption("--ui-url"):
|
||
ui_config.UI_BASE_URL = config.getoption("--ui-url")
|
||
|
||
if config.getoption("--browser"):
|
||
ui_config.BROWSER_NAME = config.getoption("--browser")
|
||
|
||
if config.getoption("--headless") is not None:
|
||
ui_config.BROWSER_HEADLESS = config.getoption("--headless")
|
||
|
||
# Настройка маркеров
|
||
config.addinivalue_line(
|
||
"markers",
|
||
"smoke: Smoke tests - critical functionality"
|
||
)
|
||
config.addinivalue_line(
|
||
"markers",
|
||
"regression: Regression tests - full functionality"
|
||
)
|
||
config.addinivalue_line(
|
||
"markers",
|
||
"api: API tests"
|
||
)
|
||
config.addinivalue_line(
|
||
"markers",
|
||
"ui: UI tests"
|
||
)
|
||
config.addinivalue_line(
|
||
"markers",
|
||
"slow: Slow running tests"
|
||
)
|
||
|
||
@pytest.fixture(scope="session")
|
||
def env_config():
|
||
"""Конфигурация окружения"""
|
||
return {
|
||
"env": settings.ENV,
|
||
"debug": settings.DEBUG,
|
||
"api_url": api_config.API_BASE_URL,
|
||
"ui_url": ui_config.UI_BASE_URL,
|
||
"log_level": settings.LOG_LEVEL,
|
||
}
|
||
|
||
@pytest.fixture(scope="session")
|
||
def api_base_url():
|
||
"""Базовый URL API"""
|
||
return api_config.API_BASE_URL
|
||
|
||
@pytest.fixture(scope="session")
|
||
def ui_base_url():
|
||
"""Базовый URL UI"""
|
||
return ui_config.UI_BASE_URL
|