vscode默认不识别pytest,必须同时显式声明框架类型、指定解释器、配置发现路径;否则测试侧边栏空白、“run test”按钮灰掉、debug无响应。

VSCode 默认不识别 pytest,必须显式声明框架类型、指定解释器、配置发现路径三者同时到位,缺一不可——否则测试侧边栏空白、“Run Test”按钮灰掉、Debug Test 点击无响应。
为什么测试资源管理器里什么都没显示
VSCode 不自动扫描全项目,它只按 python.testing.pytestArgs 指定的路径 + 文件名规则(test_*.py 或 *_test.py)查找测试文件,且默认只查 tests/ 或项目根目录。
- 若测试在
src/tests/,python.testing.pytestArgs必须写成["--rootdir=src", "tests/"],不能只写["src/tests/"]——否则conftest.py不加载,fixture 失效 - 若测试和源码都在
src/下(即src/mymodule/和src/tests/并列),用["src/"]更稳妥 - 文件名不匹配规则(比如叫
my_tests.py)会被直接忽略,VSCode 不报错也不提示 - 改完
settings.json后,必须点测试侧边栏右上角 ↻ 按钮手动刷新,VSCode 不会自动重扫
Debug Test 断点不命中或报 ModuleNotFoundError
调试时工作目录(cwd)默认是测试文件所在目录,不是项目根目录,导致 from mypackage import x 失败——这是最常被忽略的根源。
- 在
.vscode/settings.json中加:"python.testing.cwd": "${workspaceFolder}"(源码在根目录)或"python.testing.cwd": "${workspaceFolder}/src"(源码在src/) - 配合
"python.envFile": "${workspaceFolder}/.env",并在.env里写PYTHONPATH=${workspaceFolder}/src,双重保险 - 断点别打在
def test_xxx():那行,要打在函数体第一句代码上,否则 pytest 加载阶段就跳过了 - 别依赖
pip install -e .—— VSCode 调试器不走setup.py或pyproject.toml的 editable 安装逻辑
launch.json 调试单个测试时常见错误
想用 F5 直接调试一个测试函数?launch.json 必须严格按 pytest 模块方式启动,不能当普通脚本跑。
- 删掉
"program"字段,它和"module"冲突 - 必须写
"module": "pytest",等价于终端执行python -m pytest -
"args"是数组,例如:["tests/test_api.py::test_login", "-s"]——双冒号分隔文件和函数名 - 如果用了
--rootdir,确保它和 args 中路径一致,否则 pytest 可能找不到测试函数
真正卡住人的地方往往不是配置项本身,而是 cwd 和 sys.path 的隐式耦合:VSCode 调试器不继承终端的环境变量或 sys.path 修改,也不执行 setup.py,所有路径都得靠配置项或 .env 显式声明。漏掉其中任意一环,就会出现“终端能跑,VSCode 调试报错”的情况。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











