2022-02-17 09:50:03
在VSCode中调试Python单元测试需结合测试框架(如Pytest或Unittest)与调试工具,通过系统配置和操作实现高效问题定位。以下是详细步骤:
一、基础配置安装Python扩展确保VSCode已安装官方Python扩展,提供测试发现和调试支持。
启用测试功能并选择框架
点击左侧活动栏的“测试”图标(烧杯形状)。
选择“配置Python测试”,指定测试框架(pytest或unittest)。
选择测试根目录(如项目根目录或tests/文件夹)。

命名规范
Pytest:测试文件以test_开头或_test.py结尾,测试函数/方法以test_开头。
Unittest:测试类继承unittest.TestCase,方法名以test_开头。
示例:test_user_auth.py中的test_login_success()。
模块路径与虚拟环境
确保项目根目录包含__init__.py文件(若使用包结构)。
激活虚拟环境,避免因sys.path缺失导致导入失败。
配置完成后,VSCode会自动扫描测试文件,并在测试视图中显示树状结构(文件→类→方法)。

设置断点在代码行号左侧点击,添加断点。程序执行到此处会暂停,支持变量检查。

运行并调试测试
在测试视图中右键点击测试文件/类/方法,选择“调试测试”(带虫子的播放按钮)。
调试器启动后,程序会在断点处暂停,显示变量、调用堆栈等信息。
调试控制条
继续 (F5):执行至下一个断点或结束。
单步跳过 (F10):执行当前行,不进入函数内部。
单步调试 (F11):执行当前行,进入函数内部。
单步跳出 (Shift+F11):从当前函数返回调用处。
重新启动 (Ctrl+Shift+F5):重启调试会话。
停止 (Shift+F5):终止调试。
settings.json配置通过Ctrl+,打开设置,搜索“Python Testing”,配置以下参数:
Pytest:"python.testing.pytestEnabled": true,"python.testing.pytestArgs": ["-v", "--ff"] // -v显示详细信息,--ff快速失败
Unittest:"python.testing.unittestEnabled": true,"python.testing.unittestArgs": ["-v", "-s", "tests"] // -s指定测试目录
launch.json自定义调试手动创建launch.json(位于.vscode文件夹),添加调试配置:
调试特定Pytest测试:{ "name": "Debug Specific Pytest Test", "type": "python", "request": "launch", "program": "${workspaceFolder}/.venv/bin/pytest", "args": ["${file}", "-k", "test_function_name", "--no-header"], "console": "integratedTerminal"}
调试特定Unittest测试:{ "name": "Debug Specific Unittest", "type": "python", "request": "launch", "module": "unittest", "args": ["discover", "-s", "${workspaceFolder}/tests", "-p", "test_*.py"], "console": "integratedTerminal"}
测试未被发现
检查文件/方法命名是否符合框架规范。
确认虚拟环境激活且sys.path包含项目路径。
验证settings.json中pytestEnabled或unittestEnabled是否为true。
导入错误
确保项目根目录有__init__.py文件。
检查测试目录是否在PYTHONPATH中。
通过以上步骤,可充分利用VSCode的集成功能,实现Python单元测试的高效调试。