Tests/tests/conftest.py
2026-01-19 23:32:11 +04:00

106 lines
3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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