VSCode通过Python扩展调用pytest/unittest执行单元测试,需正确配置测试框架、发现路径和工作目录;关键步骤包括启用扩展、选择含测试工具的解释器、设置pytestArgs指定搜索路径、配置cwd解决导入问题,并手动刷新测试面板。

VSCode 本身不直接“运行单元测试”,而是通过 Python 扩展调用 pytest 或 unittest 框架执行——关键不是点哪个按钮,而是配置对了测试框架、发现路径和工作目录。
确认 Python 扩展已启用并选对解释器
VSCode 的测试功能由官方 Python 扩展(Microsoft)提供,不是内置功能。如果没看到测试侧边栏或“Run Test”提示,先检查:
- 是否已安装并启用
Python扩展(ID: ms-python.python) - 是否通过
Ctrl+Shift+P→Python: Select Interpreter选中了含pytest或unittest的环境(比如venv里已pip install pytest) - 终端中运行
pytest --version能成功返回版本号,说明命令可用且在 PATH 中
让 VSCode 正确发现 test_*.py 或 *_test.py 文件
VSCode 默认只扫描 tests/ 或 test/ 目录,且要求文件名匹配 test_*.py 或 *_test.py。如果你的测试文件在 src/tests/ 或叫 my_tests.py,它会直接忽略。
- 在项目根目录下建
.vscode/settings.json,加配置:{ "python.testing.pytestArgs": [ ".", "-s" ], "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false } -
"."表示从当前工作目录开始搜索;-s允许输出print()内容(调试时必需) - 若测试文件在
src/下,把"."改成"src";若用unittest,改用python.testing.unittestArgs并设"python.testing.unittestEnabled": true
单个测试函数断点调试失败?检查工作目录和导入路径
点击测试旁的 Debug Test 按钮后报 ModuleNotFoundError 或跳过断点,大概率是当前工作目录与 sys.path 不一致导致模块无法导入。
立即学习“Python免费学习笔记(深入)”;
- VSCode 默认以打开的文件夹为工作目录,但测试代码里可能写
from mypackage import module,而mypackage在src/下——此时需在.vscode/settings.json中加:"python.defaultInterpreterPath": "./venv/bin/python", "python.testing.cwd": "${workspaceFolder}/src" - 或者,在测试文件顶部临时加:
import sys sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
(仅调试用,勿提交) - 确保测试文件本身不是以
python xxx_test.py方式直接运行——VSCode 调试走的是框架入口,不是脚本入口
最常被忽略的一点:VSCode 的测试面板不会自动刷新发现结果。改完测试文件名、移动位置或更新 settings.json 后,必须手动点击测试侧边栏右上角的刷新按钮(↻),否则旧缓存还在,新测试根本不会显示。










