Skip to main content
Glama
test_core_integration.py3.92 kB
""" 核心集成测试 """ import os import sys import pytest # 添加src目录到路径 sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "src")) from genome_mcp.core import QueryParser from genome_mcp.core.tools import _query_executor class TestCoreIntegration: """核心功能集成测试""" @pytest.mark.asyncio async def test_end_to_end_gene_query(self): """端到端基因查询测试""" # 1. 解析查询 parsed = QueryParser.parse("TP53", "auto") assert parsed.type.value == "info" # 2. 执行查询 result = await _query_executor.execute(parsed) # 3. 验证结果 assert "gene_id" in result or "error" in result if "gene_id" in result: assert result["gene_id"] == "TP53" @pytest.mark.asyncio async def test_end_to_end_search(self): """端到端搜索测试""" # 1. 解析查询 parsed = QueryParser.parse("cancer", "auto") assert parsed.type.value == "search" # 2. 执行查询 result = await _query_executor.execute(parsed) # 3. 验证结果 assert "term" in result assert result["term"] == "cancer" assert "total_count" in result assert isinstance(result["total_count"], int) @pytest.mark.asyncio async def test_end_to_end_region_search(self): """端到端区域搜索测试""" # 1. 解析查询 parsed = QueryParser.parse("chr17:7565097-7590856", "auto") assert parsed.type.value == "region" # 2. 执行查询 result = await _query_executor.execute(parsed) # 3. 验证结果 assert "chromosome" in result assert "start" in result assert "end" in result assert "genes_found" in result @pytest.mark.asyncio async def test_end_to_end_batch_query(self): """端到端批量查询测试""" # 1. 解析查询 gene_ids = ["TP53", "BRCA1"] parsed = QueryParser.parse(gene_ids, "auto") assert parsed.type.value == "batch" # 2. 执行查询 result = await _query_executor.execute(parsed) # 3. 验证结果 assert "batch_size" in result assert result["batch_size"] == len(gene_ids) assert "results" in result def test_intelligent_query_recognition(self): """智能查询识别测试""" test_cases = [ ("TP53", "info"), ("BRCA1", "info"), ("chr17:7565097-7590856", "region"), ("17[7565097-7590856]", "region"), ("cancer genes", "search"), (["TP53", "BRCA1"], "batch"), ] for query, expected_type in test_cases: parsed = QueryParser.parse(query, "auto") assert parsed.type.value == expected_type, f"Failed for {query}" def test_error_handling(self): """错误处理测试""" # 测试无效区域格式 with pytest.raises(ValueError): QueryParser.parse("invalid_region", "region") # 测试空批量查询应该能处理 parsed = QueryParser.parse([], "batch") assert parsed.type.value == "batch" assert parsed.params["gene_ids"] == [] class TestMCPToolStructure: """MCP工具结构测试""" def test_mcp_tools_structure(self): """测试MCP工具结构""" from genome_mcp.main import mcp # 验证MCP实例存在并可用 assert mcp is not None, "MCP instance should exist" # 验证MCP服务器具有基本属性 assert hasattr(mcp, "name"), "MCP should have name attribute" assert hasattr(mcp, "version"), "MCP should have version attribute" # 验证MCP服务器名称和版本 assert mcp.name == "Genome MCP" assert "0.2.5" in mcp.version if __name__ == "__main__": pytest.main([__file__, "-v"])

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gqy20/genome-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server