Pytest MCP服务器
模型上下文协议(MCP)服务器,使Claude等AI助手能够运行和分析桌面应用程序的pytest测试。
概述
该项目演示了如何通过MCP将pytest与AI助手集成。它包括:
- 真实桌面应用程序:使用tkinter构建的功能齐全的计算器应用程序
- 综合测试套件:涵盖UI、功能和边缘情况的pytest测试
- MCP服务器:将pytest连接到AI助手进行交互式测试
项目结构
pytest-mcp-server/
├── src/
│ ├── __init__.py
│ └── calculator_app.py # Desktop calculator application
├── tests/
│ ├── __init__.py
│ └── test_calculator.py # Pytest test suite
├── server.py # MCP server implementation
├── pyproject.toml # Project configuration
└── README.md安装
先决条件
- Python 3.10或更高版本
- pip包管理器
设置
- 克隆或导航到项目目录:
cd /Users/303748/Documents/ws/pytest-mcp-server- 创建虚拟环境:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -e .或者安装开发依赖项:
pip install -e ".[dev]"运行计算器应用程序
要运行桌面计算器应用程序,请执行以下操作:
python -m src.calculator_app或者使用已安装的脚本:
calculator-app手动运行测试
运行所有测试:
pytest tests/以详细输出运行:
pytest tests/ -v仅运行UI测试:
pytest tests/ -m ui运行测试(慢速测试除外):
pytest tests/ -m "not slow"运行特定测试类:
pytest tests/test_calculator.py::TestBasicOperations使用MCP服务器
配置
- 查找您的Claude Desktop配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json
- 添加MCP服务器配置:
重要通知: 您需要为run_server.sh文件授予执行权限
{
"mcpServers": {
"pytest": {
"command": "/Users/303748/Documents/ws/pytest-mcp-server/run_server.sh",
"args": []
}
}
}- 重新启动克劳德桌面
与克劳德一起使用
配置后,您可以通过Claude与测试交互:
对话示例:
你: “列出计算器项目中的所有可用测试”
你: “运行计算器的UI测试”
你: “仅运行错误处理测试”
你: “显示上次测试运行的结果”
你: “加法测试失败了,你能帮我调试一下吗?”
MCP服务器工具
服务器提供三个主要工具:
1.运行测试
使用指定选项执行pytest测试。
参数:
test_path(必填):测试文件或目录的路径markers(可选):Pytest标记用于筛选测试verbose(可选):显示详细输出(默认值:true)capture(可选):输出捕获方法(默认值:“否”)
2.列表测试
列出所有可用的测试,但不运行它们。
参数:
test_path(可选):扫描测试的路径(默认:“tests/”)
3.获取测试结果
检索并格式化上次测试运行结果。
参数: 无
测试标记
测试套件使用这些标记:
@pytest.mark.ui-UI相关测试@pytest.mark.error_handling-错误处理测试@pytest.mark.slow-慢速运行测试
发展
在覆盖范围内运行测试
pytest tests/ --cov=src --cov-report=html查看覆盖率报告:
open htmlcov/index.html # macOS代码格式化
黑色格式代码:
black src/ tests/ server.py使用Ruff的Lint代码:
ruff check src/ tests/ server.py计算器功能
计算器应用程序支持:
- 基本操作:加法、减法、乘法、除法
- 高级操作:平方根
- UI控件:清除(C)、清除条目(CE)、空格(←)
- 十进制数:完全支持十进制
- 错误处理:除零、负平方根、无效表达式
测试覆盖率
测试套件包括:
基本操作
- 加法
- 减法
- 乘法
- 部门
- 按零处理划分
高级操作
- 平方根计算
- 负数的平方根
- 十进制数运算
UI功能
- 清除按钮功能
- 清晰的输入功能
- 后台操作
- 链接多个操作
边缘案例
- 非常大的数字
- 零操作
- 无效表达式
故障排除
测试未运行
确保您位于项目目录中并已激活虚拟环境:
cd /Users/303748/Documents/ws/pytest-mcp-server
source venv/bin/activate
pytest tests/MCP服务器未连接
- 检查路径是否正确
claude_desktop_config.json是正确的 - 确保Python在你的PATH中
- 配置更改后重新启动Claude Desktop
- 检查Claude Desktop日志中的错误消息
导入错误
确保软件包以可编辑模式安装:
pip install -e .贡献
欢迎投稿!需要改进的地方:
- 添加更多计算器功能(内存、历史记录)
- 在测试失败时执行屏幕截图捕获
- 添加性能基准测试工具
- 创建更多测试场景
- 改进错误消息
资源
作者
作为LinkedIn文章“为Pytest构建MCP服务器:自动化桌面应用程序测试”的示例项目创建
