vscode测试侧边栏为空是因为未满足pytest识别三要素:未显式启用pytest框架、python解释器配置错误、pytestargs路径或命名规则不匹配,且修改配置后未手动点击刷新按钮。

VSCode 默认不识别 pytest,必须同时满足三件事:显式启用框架、指定正确的 Python 解释器、配置准确的发现路径;缺一就看不到测试列表、点不动“Run 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 调试单个测试总失败?
常见错误是把测试当普通脚本跑,而 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 显式声明。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











