VSCode需正确配置Python解释器、启用对应测试框架(pytest/unittest)并遵循文件命名规则,才能在侧边栏集成测试发现与运行;关键在于解释器路径、settings.json声明及测试结构匹配。

VSCode 本身不自带 Python 单元测试运行能力,但能通过配置 settings.json 和正确安装依赖,让测试发现、运行、调试完全集成到侧边栏和命令面板中——关键不是装插件,而是让 VSCode 知道“测试在哪、用什么跑、怎么找”。
确认 Python 扩展已启用且解释器正确
VSCode 的 Python 测试功能由官方 ms-python.python 扩展提供,不是第三方插件。如果测试图标(⚡ 图标)不出现,大概率是解释器没选对或扩展未激活。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter,选中你项目实际使用的 Python 环境(如./venv/bin/python或conda env路径) - 确保该环境下已安装
pytest或unittest:在终端执行pip list | grep -i pytest或python -m unittest --help验证 - 若使用 conda,注意 VSCode 可能默认选系统 Python,而非 conda env 中的解释器——必须手动指定
在 settings.json 中声明测试框架类型和路径
VSCode 不会自动猜你用的是 pytest 还是 unittest,必须显式声明。配置写在工作区或用户级 settings.json 中,优先级:工作区 > 用户。
- 打开设置(
Ctrl+,),点击右上角「打开设置 (JSON)」图标,添加以下字段: - 用
pytest:"python.testing.pytestEnabled": true, "python.testing.pytestArgs": [ "./tests", "-v" ],其中./tests是你的测试目录路径,可替换为"src/tests"等;-v是可选参数,加了才显示详细输出 - 用
unittest:"python.testing.unittestEnabled": true, "python.testing.unittestArgs": [ "-s", "./tests", "-p", "test_*.py" ],-s指定起始目录,-p指定匹配模式(注意:不支持**/test_*.py这种 glob,只认单层通配) - 禁用另一个框架:比如启用了
pytest,务必设"python.testing.unittestEnabled": false,否则可能冲突报错Test discovery failed: multiple test frameworks enabled
测试文件命名与结构必须符合框架约定
VSCode 的测试发现完全依赖底层框架规则。即使配置全对,文件放错位置或命名不对,测试列表就是空的。
立即学习“Python免费学习笔记(深入)”;
-
pytest默认只找:test_*.py或*_test.py文件,且文件内函数或类名需以test_开头;测试目录下建议有__init__.py(非必须但避免导入问题) -
unittest要求更严格:测试类必须继承unittest.TestCase,方法名必须是test_*,且文件名必须匹配unittestArgs中的-p模式(例如设了"test_*.py",就不能叫example_tests.py) - 常见坑:
tests/目录不在 Python path 中 → 导入被测模块失败;解决办法是在测试文件开头加:import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent))
或在根目录放pyproject.toml声明[tool.setuptools.py_modules]
运行与调试测试时注意环境隔离
点击测试旁的 ▶️ 或 ? 图标时,VSCode 会调用当前选中的 Python 解释器执行命令。如果你在虚拟环境中安装了 pytest,但解释器指向全局 Python,就会报 ModuleNotFoundError: No module named 'pytest'。
- 检查底部状态栏:左边应显示类似
Python 3.11.5 ('venv': venv),括号里有环境标识才算生效 - 调试单个测试函数时,VSCode 会生成临时 launch config,但断点只在测试代码里有效——被测模块若在其他包中,需确保其源码可访问(不能只装 wheel)
- 想看
print()输出?在pytestArgs加-s(捕获关闭),或加--log-cli-level=INFO查看日志
最常卡住的地方不是配置语法,而是解释器路径和测试文件结构不匹配。每次改完 settings.json,记得重启 VSCode 窗口(不是重载窗口),再点「Python Test Explorer」侧边栏刷新按钮——它不会自动轮询配置变更。










