vscode需手动配置测试框架、解释器和路径三者才能识别python测试,否则测试侧边栏空白;pytestargs路径须匹配项目结构,cwd和pythonpath必须显式设置,调试时需删program字段改用module:"pytest",且修改配置后须手动刷新测试侧边栏。

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











