scrapeRL / backend /tests /conftest.py
NeerajCodz's picture
test: add comprehensive backend test suite
46eecf4
"""Pytest configuration and fixtures."""
import asyncio
from typing import AsyncGenerator, Generator
import pytest
from fastapi.testclient import TestClient
from httpx import AsyncClient, ASGITransport
from app.main import app, create_app
@pytest.fixture(scope="session")
def event_loop() -> Generator[asyncio.AbstractEventLoop, None, None]:
"""Create event loop for async tests."""
loop = asyncio.new_event_loop()
yield loop
loop.close()
@pytest.fixture
def client() -> Generator[TestClient, None, None]:
"""Create sync test client."""
with TestClient(app) as c:
yield c
@pytest.fixture
async def async_client() -> AsyncGenerator[AsyncClient, None]:
"""Create async test client."""
transport = ASGITransport(app=app)
async with AsyncClient(transport=transport, base_url="http://test") as c:
yield c
@pytest.fixture
def sample_task() -> dict:
"""Sample task data for testing."""
return {
"task_id": "test_task_001",
"task_name": "Extract Product Info",
"task_type": "extraction",
"target_fields": ["name", "price", "description"],
"target_url": "https://example.com/product/123",
}
@pytest.fixture
def sample_action() -> dict:
"""Sample action data for testing."""
return {
"action_type": "extract_field",
"parameters": {
"field_name": "price",
"selector": ".product-price",
},
"confidence": 0.95,
}