test_recommend.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import pytest
  2. from httpx import AsyncClient, ASGITransport
  3. from app.main import app
  4. @pytest.mark.asyncio
  5. async def test_health_check():
  6. transport = ASGITransport(app=app)
  7. async with AsyncClient(transport=transport, base_url="http://test") as client:
  8. resp = await client.get("/health")
  9. assert resp.status_code == 200
  10. assert resp.json() == {"status": "ok"}
  11. @pytest.mark.asyncio
  12. async def test_recommend_empty_tags():
  13. """空标签应返回空列表"""
  14. transport = ASGITransport(app=app)
  15. async with AsyncClient(transport=transport, base_url="http://test") as client:
  16. resp = await client.post("/api/v1/recommend", json={
  17. "user_id": 1,
  18. "tags": [],
  19. "query": "推荐一些适合孩子的活动",
  20. "limit": 3,
  21. })
  22. assert resp.status_code == 200
  23. data = resp.json()
  24. assert "items" in data
  25. @pytest.mark.asyncio
  26. async def test_recommend_with_tags():
  27. """带标签应返回推荐结果"""
  28. transport = ASGITransport(app=app)
  29. async with AsyncClient(transport=transport, base_url="http://test") as client:
  30. resp = await client.post("/api/v1/recommend", json={
  31. "user_id": 1,
  32. "tags": ["益生菌", "肠胃"],
  33. "limit": 3,
  34. })
  35. assert resp.status_code == 200
  36. data = resp.json()
  37. assert "items" in data
  38. assert "source" in data