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