test_generate_endpoint.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import asyncio
  2. import unittest
  3. from pathlib import Path
  4. from app.endpoints.generate_qa_pair import generate_qa_pair
  5. from app.endpoints.schema import QARequest
  6. class GenerateQAPairEndpointTest(unittest.TestCase):
  7. def test_get_dashboard_info_operator(self):
  8. from app.operators.get_dashboard_info import get_dashboard_info
  9. info = get_dashboard_info({
  10. "dashboard_id": "DB001",
  11. "card_ids": ["C0001"],
  12. "bbk": "BBK002",
  13. })
  14. self.assertEqual(info.dashboard_id, "DB001")
  15. self.assertGreaterEqual(len(info.cards), 1)
  16. self.assertEqual(info.cards[0].card_id, "C0001")
  17. def test_generate_qa_pair_endpoint_returns_data(self):
  18. request = QARequest(
  19. request_id="req-001",
  20. dashboard_id="DB001",
  21. card_ids=["C0001", "C0002"],
  22. bbk_id="BBK002",
  23. user_request="测试问题",
  24. )
  25. response_model = asyncio.run(generate_qa_pair(request))
  26. self.assertEqual(response_model.returnCode, "SUCCESS")
  27. body = response_model.body
  28. self.assertEqual(body.dashboard_id, request.dashboard_id)
  29. self.assertTrue(set(body.card_ids).issubset(set(request.card_ids)))
  30. self.assertGreaterEqual(len(body.qa_pairs), 1)
  31. first = body.qa_pairs[0]
  32. self.assertEqual(first.dashboard_id, request.dashboard_id)
  33. self.assertIn(first.card_id, request.card_ids)
  34. log_dir = Path("app/log/test_results")
  35. log_dir.mkdir(parents=True, exist_ok=True)
  36. outfile = log_dir / "generate_qa_pair_response.txt"
  37. outfile.write_text(response_model.model_dump_json(ensure_ascii=False, indent=2))
  38. if __name__ == "__main__":
  39. unittest.main()