一、测试 FastMCP 服务器
如何测试您的 FastMCP 服务器。
确保 FastMCP 服务器可靠且可维护的最佳方法是进行测试!FastMCP 客户端与 Pytest 结合提供了一种简单而强大的方式来测试 FastMCP 服务器。
更多相关视频教程: 👉 《FastMCP快速入门教程》
更多相关文章内容: 👉 《FastMCP 2.x 干货笔记》专栏
二、前提条件
测试 FastMCP 服务器需要 pytest-asyncio 来处理异步测试函数和固件。将其作为开发依赖安装:
pip install pytest-asyncio
建议在 pyproject.toml 中将 asyncio 模式设置为 auto 来配置 pytest 自动处理异步测试:
[tool.pytest.ini_options]
asyncio_mode = "auto"
这消除了用 @pytest.mark.asyncio 装饰每个异步测试的需要。
三、使用 Pytest 固件进行测试
使用 Pytest 固件,可以将 FastMCP 服务器包装在客户端实例中,使与服务器的交互快速简便。这在构建自己的 MCP 服务器时特别有用,通过在开发期间避免使用 MCP Inspector 等单独工具,实现了紧密的开发循环:
import pytest
from fastmcp.client import Client
from fastmcp.client.transports import FastMCPTransport
from my_project.main import mcp
@pytest.fixture
async def main_mcp_client():
async with Client(transport=mcp) as mcp_client:
yield mcp_client
async def test_list_tools(main_mcp_client: Client[FastMCPTransport]):
list_tools = await main_mcp_client.list_tools()
assert len(list_tools) == 5
建议使用 inline-snapshot 库 来断言来自 MCP 服务器的复杂数据结构。该库允许编写易于阅读和理解的测试,并且在数据结构更改时也易于更新。
from inline_snapshot import snapshot
async def test_list_tools(main_mcp_client: Client[FastMCPTransport]):
list_tools = await main_mcp_client.list_tools()

最低0.47元/天 解锁文章
526

被折叠的 条评论
为什么被折叠?



