Pytest Runner for Trae IDE
一个功能强大的 Trae IDE 插件,提供与 PyCharm 测试模块一致的 pytest 运行能力。
功能特性
🚀 核心功能
- 🟢 一键运行测试: 在测试函数前显示绿色可执行图标,点击即可运行
- 🟢🟢🟢 多种运行模式: 支持运行单个测试函数、测试类、测试文件或所有测试,带有增强视觉反馈
- 🏷️ 测试标签系统: 自动为测试分配标签(unit、integration、functional),支持按标签筛选运行
- 📊 测试覆盖率: 集成测试覆盖率分析,支持VS Code原生测试覆盖率显示
- 🔧 环境变量配置: 通过键值对或.env文件设置自定义环境变量
- ⚡ 参数自定义: 支持自定义 pytest 执行参数,智能警告抑制
- 🎨 增强输出: 彩色化测试结果,带图标显示(✅ 通过,❌ 失败,⚠️ 跳过)
- 🛡️ 智能错误处理: 当Python或pytest未找到时提供清晰错误信息
- 📄 环境文件支持: 从.env文件加载环境变量
- 🧪 VS Code Tests API: 完全兼容VS Code原生测试API,支持测试资源管理器
- 🎯 智能面板切换: 测试完成后自动切换到「run: trae.TestRun」面板,提升用户体验
📍 CodeLens 支持
在 Python 测试文件中,插件会自动检测测试函数并在代码中显示以下操作按钮:
▶ Run Test
- 运行单个测试函数
🐛 Debug Test
- 调试单个测试函数
▶▶ Run All Tests in Class
- 运行测试类中的所有测试
▶▶▶ Run All Tests in File
- 运行文件中的所有测试
🏷️ 测试标签系统
插件会根据测试函数名称自动分配标签,帮助您更好地组织和筛选测试:
自动标签分类
- Unit Tests (
unit
): 包含 "unit" 或以 "test_unit" 开头的测试
- Integration Tests (
integration
): 包含 "integration" 或 "integr" 的测试
- Functional Tests (
functional
): 包含 "functional"、"func" 或 "e2e" 的测试
- Runnable (
runnable
): 所有可执行的测试都会自动添加此标签
标签使用示例
def test_unit_user_creation(): # 自动标记为 unit 测试
pass
def test_integration_database(): # 自动标记为 integration 测试
pass
def test_functional_user_workflow(): # 自动标记为 functional 测试
pass
🧪 VS Code Tests API 集成
插件完全兼容 VS Code 原生测试 API,提供以下功能:
测试资源管理器
- 在 VS Code 测试资源管理器中查看所有测试
- 按文件夹结构组织测试
- 支持测试状态实时更新
测试运行配置
- Run Tests: 标准测试执行
- Debug Tests: 调试模式执行
- Run with Coverage: 带覆盖率分析的测试执行
测试结果显示
- 详细的测试结果和错误信息
- 测试执行时间统计
- 失败测试的堆栈跟踪信息
- 智能面板切换: 测试完成后自动切换到测试结果面板,无需手动操作
🔧 配置选项
- Python 解释器路径: 指定 Python 解释器(默认:
.venv/bin/python
)
- Pytest 可执行文件路径: 指定 pytest 命令路径(默认:
.venv/bin/pytest
)
- 默认参数: 设置 pytest 的默认执行参数
- 环境变量: 配置测试执行时的环境变量
- 环境变量文件: 从.env文件加载环境变量
- 工作目录: 设置 pytest 的工作目录
- 自动虚拟环境: 默认配置使用项目根目录下的
.venv
虚拟环境
安装
- 在 Trae IDE 中打开扩展管理器
- 搜索 "Pytest Runner"
- 点击安装
使用方法
快速开始
- 打开包含 pytest 测试的 Python 文件
- 插件会自动检测测试函数并显示运行按钮
- 点击
▶ Run Test
按钮运行测试
测试函数检测
插件会自动检测以下模式的测试函数:
- 函数名以
test_
开头的函数
- 函数名以
_test
结尾的函数
- 类名以
Test
开头或以 Test
结尾的测试类
- 测试类中的测试方法
配置插件
方法一:通过命令面板
- 按
Ctrl+Shift+P
(Windows/Linux) 或 Cmd+Shift+P
(macOS) 打开命令面板
- 输入 "Configure Pytest" 并选择
- 在弹出的选项中选择要配置的项目
方法二:通过设置文件
在 Trae IDE 设置中添加以下配置:
{
"pytestSmartRunner.pythonPath": ".venv/bin/python",
"pytestSmartRunner.pytestPath": ".venv/bin/pytest",
"pytestSmartRunner.defaultArgs": ["-v", "--tb=short"],
"pytestSmartRunner.environmentVariables": {
"PYTHONPATH": "/path/to/your/modules",
"DEBUG": "1"
},
"pytestSmartRunner.workingDirectory": ""
}
支持的命令
pytest-smart-runner.runTest
: 运行所有测试
pytest-smart-runner.runTestFunction
: 运行当前测试函数
pytest-smart-runner.runTestFile
: 运行当前文件的所有测试
pytest-smart-runner.runTestClass
: 运行当前测试类
pytest-smart-runner.configure
: 打开配置对话框
配置说明
Python 解释器路径 (pythonPath)
指定要使用的 Python 解释器。默认使用项目虚拟环境:
.venv/bin/python
(默认:项目虚拟环境)
python
(系统默认 Python)
/usr/bin/python3
(绝对路径)
./venv/bin/python
(其他虚拟环境路径)
Pytest 路径 (pytestPath)
指定 pytest 可执行文件的路径。默认使用项目虚拟环境:
.venv/bin/pytest
(默认:项目虚拟环境)
pytest
(系统默认 pytest)
/path/to/venv/bin/pytest
(其他虚拟环境中的 pytest)
python -m pytest
(通过 Python 模块运行)
默认参数 (defaultArgs)
设置 pytest 的默认执行参数,例如:
["-v"]
- 详细输出
["-v", "--tb=short"]
- 详细输出和简短回溯
["-x", "--pdb"]
- 遇到失败时停止并进入调试器
环境变量 (environmentVariables)
设置测试执行时的环境变量:
{
"PYTHONPATH": "/path/to/modules",
"DEBUG": "1",
"DATABASE_URL": "sqlite:///test.db"
}
工作目录 (workingDirectory)
设置 pytest 的工作目录。如果为空,则使用工作区根目录。
示例
基本测试文件
import pytest
def test_addition():
"""测试加法功能"""
assert 1 + 1 == 2
def test_subtraction():
"""测试减法功能"""
assert 5 - 3 == 2
class TestCalculator:
"""计算器测试类"""
def test_multiply(self):
"""测试乘法"""
assert 3 * 4 == 12
def test_divide(self):
"""测试除法"""
assert 10 / 2 == 5
@pytest.mark.parametrize("a,b,expected", [
(1, 2, 3),
(2, 3, 5),
(3, 4, 7)
])
def test_parametrized_addition(a, b, expected):
"""参数化测试"""
assert a + b == expected
在上述文件中,插件会在每个测试函数和测试类前显示运行按钮。
故障排除
常见问题
Q: 插件没有显示运行按钮
A: 确保:
- 文件是 Python 文件 (.py)
- 函数名符合测试函数命名规范
- 插件已正确激活
Q: 运行测试时出现 "pytest not found" 错误
A: 检查:
- pytest 是否已安装 (
pip install pytest
)
- pytestPath 配置是否正确
- Python 环境是否正确
Q: 测试运行但没有输出
A: 检查:
- 输出面板是否打开
- 工作目录配置是否正确
- 环境变量是否正确设置
调试技巧
- 查看输出面板中的详细信息
- 检查 pytest 命令是否能在终端中正常运行
- 验证配置文件中的路径是否正确
- 确保测试文件在正确的工作目录中
开发
构建插件
# 安装依赖
npm install
# 编译 TypeScript
npm run build
# 监听文件变化
npm run watch
项目结构
pytest-smart-runner/
├── src/
│ ├── extension.ts # 插件入口
│ ├── pytestSmartRunner.ts # pytest 运行器
│ ├── testFunctionDetector.ts # 测试函数检测
│ ├── configurationManager.ts # 配置管理
│ └── codeLensProvider.ts # CodeLens 提供器
├── manifest.json # 插件清单
├── tsconfig.json # TypeScript 配置
└── README.md # 说明文档
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License
更新日志
v1.0.6
- 🗂️ 目录过滤: 为测试发现添加可配置的目录排除功能
- 新增
pytestSmartRunner.excludeDirectories
设置,用于指定要忽略的目录
- 默认排除:
.git
、.venv
、node_modules
、__pycache__
、.pytest_cache
- 支持读取 pytest 配置文件(
pytest.ini
、pyproject.toml
、tox.ini
、setup.cfg
)
- 新增
pytestSmartRunner.configFiles
设置,用于指定要读取的配置文件
- 自动解析
pyproject.toml
中的 [tool.pytest.ini_options]
- 自动解析 INI 文件中的
[pytest]
部分
- 🔍 增强测试发现:
- 遵循 pytest 配置的测试文件模式和排除规则
- 改进文件监听,支持可配置的测试模式
- 通过排除无关目录提高性能
v1.0.5
- 🆕 新功能: 集成 VS Code 测试 API,提供原生测试发现和执行
- ✨ 增强功能: 测试现在显示在 VS Code 内置的测试资源管理器面板中
- 🔧 改进: 添加实时测试结果解析和状态更新
- ⚙️ 技术改进: 实现
TestController
、TestItem
和 TestRun
以实现与 VS Code 的无缝集成
v1.0.4
- 🐛 重要 Bug 修复: 修复了在测试类中的测试方法执行时错误地运行整个类的问题
- ✅ 精确测试执行: 现在点击测试方法的运行按钮只会执行该特定方法,而不是整个测试类
- 🔧 改进测试检测: 增强了测试函数检测器,正确识别类中的测试方法并生成完整的测试路径
v1.0.3
- 🟢 增强视觉反馈:为运行测试添加绿色图标
- 🎨 彩色化输出:测试结果带有颜色和图标显示
- 📄 环境文件支持:支持从 .env 文件加载环境变量
- 🛡️ 智能错误处理:改进错误消息和异常处理
- ⚡ 优化执行:智能警告抑制和更好的输出格式
v1.0.0
- 初始版本发布
- 支持基本的 pytest 运行功能
- 提供 CodeLens 集成
- 支持配置管理
- 与 PyCharm 测试模块功能对等