| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/env python3
- """
- 测试MCP服务的混合检索功能
- """
- import sys
- import os
- import json
- import unittest
- import requests
- from typing import Dict, Any
- # 添加项目根目录到Python路径
- sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- class TestMCPHybridSearch(unittest.TestCase):
- """测试MCP服务的混合检索功能"""
-
- def setUp(self):
- """设置测试环境"""
- # MCP服务的基础URL
- self.base_url = "http://localhost:18000"
-
- # 测试数据
- # 测试图片
- self.test_image = r"D:\project\work\ragflow_plugs\book\output\temp\2.png"
- # 测试文本查询
- self.test_text_query = "卡梅拉"
-
- def test_hybrid_search(self):
- """测试混合检索API"""
- print("测试混合检索API...")
-
- # 构建请求数据
- data = {
- "text_query": self.test_text_query,
- "image": self.test_image,
- "topn": 2
- }
-
- # 发送请求
- response = requests.post(
- f"{self.base_url}/tools/hybrid_search",
- json=data
- )
-
- # 验证响应
- self.assertEqual(response.status_code, 200, f"请求失败: {response.text}")
- result = response.json()
- self.assertTrue(result["success"], f"API调用失败: {result.get('message', '未知错误')}")
- self.assertIn("output", result, "响应中缺少hits字段")
- self.assertIn("total", result, "响应中缺少total字段")
- self.assertIsInstance(result["output"], list, "hits字段应该是一个列表")
- self.assertIsInstance(result["total"], int, "total字段应该是一个整数")
-
- print(f"✓ 混合检索API测试通过,命中数量: {result['total']}")
-
-
- if __name__ == "__main__":
- """运行测试"""
- print("开始测试MCP服务的混合检索功能...\n")
-
- # 创建测试套件
- suite = unittest.TestLoader().loadTestsFromTestCase(TestMCPHybridSearch)
-
- # 运行测试
- runner = unittest.TextTestRunner(verbosity=2)
- result = runner.run(suite)
-
- print(f"\n测试完成,共运行 {result.testsRun} 个测试,成功 {result.testsRun - len(result.failures) - len(result.errors)} 个,失败 {len(result.failures)} 个,错误 {len(result.errors)} 个")
|