Files
hunjing/backend/tests/api/test_runs_endpoints.py
2026-08-21 16:00:13 +08:00

42 lines
1.3 KiB
Python

"""Run 列表 API 测试(归档页运行时间河数据源)。"""
from collections.abc import AsyncGenerator
import pytest
from httpx import ASGITransport, AsyncClient
from app.main import app
@pytest.fixture
async def client() -> AsyncGenerator[AsyncClient, None]:
transport = ASGITransport(app=app)
async with AsyncClient(transport=transport, base_url="http://test") as http_client:
yield http_client
@pytest.mark.asyncio
async def test_list_runs_returns_page(client: AsyncClient) -> None:
resp = await client.get("/api/v1/runs")
assert resp.status_code == 200
body = resp.json()
assert "items" in body
assert "total" in body
assert body["page"] == 1
assert isinstance(body["items"], list)
@pytest.mark.asyncio
async def test_list_runs_filters_accepted(client: AsyncClient) -> None:
# 过滤参数被接受;seed 后无 run,验证端点工作且不报错
resp = await client.get("/api/v1/runs?status=completed&character_id=character_none")
assert resp.status_code == 200
assert resp.json()["total"] == 0
@pytest.mark.asyncio
async def test_get_run_detail_not_found(client: AsyncClient) -> None:
# 列表端点("")不破坏详情端点(/{run_id})的路由顺序
resp = await client.get("/api/v1/runs/run_missing")
assert resp.status_code == 404