68_FastMCP 2.x 干货笔记之 FastMCP 核心模式:测试 FastMCP 服务器

一、测试 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()

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾飞开源

您的支持是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值