vscode需手动配置pytest测试框架:先安装pytest到指定python解释器环境,再通过设置选择该解释器、配置pytestargs指定测试路径、设置testing.cwd确保正确工作目录,最后点击测试侧边栏刷新按钮生效。

VSCode 默认不识别 pytest,必须手动声明测试框架类型、指定解释器、配置发现路径,三者缺一不可——否则测试侧边栏空白、右上角“Run Test”按钮灰掉、Debug Test 点击无响应。
怎么让 VSCode 找到 pytest 可执行文件
VSCode 不靠 PATH 查找 pytest,而是依赖 Python 解释器环境里是否真装了它,并通过设置明确指向该环境。
- 先在终端进项目根目录,运行
pip install pytest(推荐在虚拟环境中装) - 左下角点击 Python 版本,用
Ctrl+Shift+P→Python: Select Interpreter选中这个带 pytest 的解释器 - 验证:终端执行
python -m pytest --version能返回版本号才算成功 - 别配
python.testing.pytestPath—— 这个字段已过时,新版扩展只认解释器环境里的模块
为什么测试资源管理器里什么都没显示
VSCode 不自动扫描全项目,它只按你给的路径 + 文件名规则找 test_*.py 或 *_test.py,且默认只查 tests/ 或项目根目录。
- 检查测试文件名是否合规:比如
my_tests.py不行,得叫test_my.py或my_test.py - 如果测试在
src/tests/下,必须在.vscode/settings.json里写:"python.testing.pytestArgs": ["src/tests/", "-s"] - 如果测试和源码都在
src/下(即src/mymodule/和src/tests/并列),pytestArgs用["src/"]更稳妥 - 改完 settings 后,**必须点测试侧边栏右上角 ↻ 按钮手动刷新**,VSCode 不会自动重扫
Debug Test 断点不命中或报 ModuleNotFoundError
调试时工作目录(cwd)默认是测试文件所在目录,不是项目根,导致 from mypackage import x 失败——这是最常被忽略的根源。
- 在
.vscode/settings.json中加这一行:"python.testing.cwd": "${workspaceFolder}" - 如果源码在
src/,则写:"python.testing.cwd": "${workspaceFolder}/src" - 配合
"python.envFile": "${workspaceFolder}/.env",并在.env里写PYTHONPATH=${workspaceFolder}/src,双重保险 - 断点别打在
def test_xxx():那行,要打在函数体第一句代码上,否则 pytest 加载阶段就跳过了
launch.json 调试单个测试时常见错误
想用 F5 直接调试一个测试函数?launch.json 必须严格按 pytest 模块方式启动,不能当普通脚本跑。
- 删掉
"program"字段,它和"module"冲突 - 必须写
"module": "pytest",等价于终端执行python -m pytest -
"args"是数组,例如:["tests/test_api.py::test_login", "-s"]—— 双冒号分隔文件和函数名 -
"cwd"必须和settings.json里一致,否则 import 依然炸 - 不要在
launch.json里重复设python.defaultInterpreterPath,它由 VSCode 左下角解释器决定
最易漏的其实是两件事:一是改完 settings.json 忘了点那个小小的刷新按钮,二是以为终端能 import 就等于调试器也能 import —— 实际上它们的工作目录和 sys.path 完全独立。











