pytest测试服务器

一个模型上下文协议(MCP)服务器,使AI助手如Claude能够运行和分析桌面应用程序的pytest测试。

  • by enginSacan
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 enginSacan/MCPPyTestImplementation

使用说明

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包管理器

设置

  1. 克隆或导航到项目目录:
cd /Users/303748/Documents/ws/pytest-mcp-server
  1. 创建虚拟环境:
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
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服务器

配置

  1. 查找您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加MCP服务器配置:

重要通知: 您需要为run_server.sh文件授予执行权限

{
  "mcpServers": {
    "pytest": {
      "command": "/Users/303748/Documents/ws/pytest-mcp-server/run_server.sh",
      "args": []
    }
  }
}
  1. 重新启动克劳德桌面

与克劳德一起使用

配置后,您可以通过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服务器未连接

  1. 检查路径是否正确 claude_desktop_config.json 是正确的
  2. 确保Python在你的PATH中
  3. 配置更改后重新启动Claude Desktop
  4. 检查Claude Desktop日志中的错误消息

导入错误

确保软件包以可编辑模式安装:

pip install -e .

贡献

欢迎投稿!需要改进的地方:

  • 添加更多计算器功能(内存、历史记录)
  • 在测试失败时执行屏幕截图捕获
  • 添加性能基准测试工具
  • 创建更多测试场景
  • 改进错误消息

资源

作者

作为LinkedIn文章“为Pytest构建MCP服务器:自动化桌面应用程序测试”的示例项目创建