""" Тесты для проверки работы фикстур pytest. """ import pytest import requests @pytest.mark.unit def test_frontend_url_fixture(frontend_url): """Тест фикстуры frontend_url""" assert frontend_url is not None assert isinstance(frontend_url, str) assert frontend_url.startswith("http") # Проверяем что URL соответствует настройкам # По умолчанию должен быть http://localhost:3000 # Но в тестах может быть переопределен print(f"📊 frontend_url: {frontend_url}") print(f"📊 Ожидаемый по умолчанию: http://localhost:3000") # В тестах может быть любой валидный URL assert "localhost" in frontend_url or "127.0.0.1" in frontend_url @pytest.mark.unit def test_backend_url_fixture(backend_url): """Тест фикстуры backend_url""" assert backend_url == "http://localhost:8000" @pytest.mark.unit def test_test_user_credentials_fixture(test_user_credentials): """Тест фикстуры test_user_credentials""" assert test_user_credentials is not None assert "email" in test_user_credentials assert "password" in test_user_credentials assert test_user_credentials["email"] == "test_admin@discours.io" assert test_user_credentials["password"] == "password123" @pytest.mark.unit def test_auth_headers_fixture(auth_headers): """Тест фикстуры auth_headers""" headers = auth_headers() assert headers["Content-Type"] == "application/json" # Тест с токеном token = "test_token_123" headers_with_token = auth_headers(token) assert headers_with_token["Content-Type"] == "application/json" assert headers_with_token["Authorization"] == f"Bearer {token}" @pytest.mark.unit def test_wait_for_server_fixture(wait_for_server): """Тест фикстуры wait_for_server""" # Тест с несуществующим URL (должен вернуть False) result = wait_for_server("http://localhost:9999", max_attempts=1, delay=0.1) assert result is False @pytest.mark.integration def test_backend_server_fixture(backend_server): """Тест фикстуры backend_server""" # Фикстура должна вернуть True если сервер запущен assert backend_server is True @pytest.mark.integration def test_test_client_fixture(test_client): """Тест фикстуры test_client""" from starlette.testclient import TestClient assert isinstance(test_client, TestClient) @pytest.mark.asyncio @pytest.mark.integration async def test_browser_context_fixture(browser_context): """Тест фикстуры browser_context""" # Проверяем что контекст создан assert browser_context is not None # Создаем простую страницу для теста page = await browser_context.new_page() assert page is not None # Закрываем страницу await page.close() @pytest.mark.asyncio @pytest.mark.integration async def test_page_fixture(page): """Тест фикстуры page""" # Проверяем что страница создана assert page is not None # Проверяем что таймауты установлены # (это внутренняя деталь Playwright, но мы можем проверить что страница работает) try: # Пытаемся перейти на пустую страницу await page.goto("data:text/html,Test") content = await page.content() assert "Test" in content except Exception as e: # Если что-то пошло не так, это не критично для теста фикстуры pytest.skip(f"Playwright не готов: {e}") @pytest.mark.integration def test_api_base_url_fixture(api_base_url): """Тест фикстуры api_base_url""" assert api_base_url == "http://localhost:8000/graphql" @pytest.mark.unit def test_db_session_fixture(db_session): """Тест фикстуры db_session""" # Проверяем что сессия создана assert db_session is not None # Проверяем что можем выполнить простой запрос from sqlalchemy import text result = db_session.execute(text("SELECT 1")) assert result.scalar() == 1 @pytest.mark.unit def test_test_engine_fixture(test_engine): """Тест фикстуры test_engine""" # Проверяем что engine создан assert test_engine is not None # Проверяем что можем выполнить простой запрос from sqlalchemy import text with test_engine.connect() as conn: result = conn.execute(text("SELECT 1")) assert result.scalar() == 1 @pytest.mark.unit def test_test_session_factory_fixture(test_session_factory): """Тест фикстуры test_session_factory""" # Проверяем что фабрика создана assert test_session_factory is not None # Проверяем что можем создать сессию session = test_session_factory() assert session is not None session.close()