vscode默认不识别pytest,必须同时启用框架、指定解释器、配置发现路径三者缺一不可;否则测试侧边栏空白、“run test”按钮灰掉、debug无响应,且需手动刷新、正确设置cwd和文件命名规则。

VSCode 默认不识别 pytest,必须同时满足三件事:显式启用框架、指定正确解释器、配置匹配的发现路径;缺一不可,否则测试侧边栏空白、“Run Test”按钮灰掉、Debug 点击无响应。
为什么测试资源管理器里什么都没显示
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 显式声明。











