VSCode测试侧边栏为空是因为未正确配置测试发现机制:需设置python.testing.testFramework为"pytest"、关闭unittestEnabled、pytestArgs为JSON数组、文件名匹配test_.py或_test.py、函数命名规范为test_xxx(),且修改settings.json后必须手动点击刷新按钮。

VSCode 里跑 pytest,用的是内置的 Testing 视图(侧边栏烧杯图标),不是终端、不是调试控制台、也不是自定义面板——它是一套由 Python 扩展驱动的、结构化管理测试生命周期的 UI 系统。
为什么点开测试侧边栏是空的?
空不是因为没装 pytest,而是 VSCode 根本没“发现”任何测试。它不扫描全项目,只按你给的路径 + 命名规则 + 框架声明三者交叉验证:
-
python.testing.testFramework必须设为"pytest",且python.testing.unittestEnabled得关掉,否则它默认当 unittest 处理 -
python.testing.pytestArgs必须是 JSON 数组,比如["tests/", "-s"];写成字符串"tests/ -s"就静默失效 - 文件名必须匹配
test_*.py或*_test.py,my_tests.py这类名字直接被跳过 - 测试函数得是
def test_xxx():,不能带参数(@pytest.mark.parametrize除外),也不能在__init__.py缺失的目录下
点“Debug Test”断点不命中,常见原因
不是断点坏了,是调试器压根没加载到你的模块。核心问题永远是工作目录和模块路径错位:
- VSCode 默认以测试文件所在目录为
cwd,但你的from mypackage import x要求src/在sys.path里 - 解决方法优先写进
.vscode/settings.json:"python.testing.cwd": "${workspaceFolder}/src" - 别依赖
pip install -e .——VSCode 调试器不走setup.py,那段路径注入根本没执行 - 断点别打在
def test_xxx():那行,要打在函数体第一句可执行代码上,否则 pytest 加载阶段就跳过了
launch.json 调试单个测试时必须避开的坑
想用 F5 直接调试一个 test_login?launch.json 不是照着脚本写的,得模拟 python -m pytest 的启动方式:
- 删掉
"program"字段,它和"module"冲突 - 必须写
"module": "pytest" -
"args"是数组,例如:["tests/test_api.py::test_login", "-s"]——双冒号分隔文件和函数名 - 如果用了
conftest.py,确保它在pytestArgs指定的--rootdir下,否则 fixture 不生效
最常被忽略的其实是刷新动作:改完 settings.json 后,测试侧边栏右上角那个 ↻ 按钮必须点一下,VSCode 不会自动重扫。没点,配置就是白配。


















