如何设置VSCode中的Pytest测试环境配置?
- 内容介绍
- 文章标签
- 相关推荐
本文共计873个文字,预计阅读时间需要4分钟。
VSCode 默认不支持pytest,需要手动配置测试框架。以下是配置步骤:
怎么让 VSCode 找到 pytest 可执行文件
VSCode 不靠 PATH 查找 pytest,而是依赖 Python 解释器环境里是否真装了它,并通过设置明确指向该环境。
- 先在终端进项目根目录,运行
pip install pytest(推荐在虚拟环境中装) - 左下角点击 Python 版本,用
Ctrl+Shift+P→Python: Select Interpreter选中这个带 pytest 的解释器 - 验证:终端执行
python -m pytest --version能返回版本号才算成功 - 别配
python.testing.pytestPath—— 这个字段已过时,新版扩展只认解释器环境里的模块
为什么测试资源管理器里什么都没显示
VSCode 不自动扫描全项目,它只按你给的路径 + 文件名规则找 test_*.py 或 *_test.py,且默认只查 tests/ 或项目根目录。
- 检查测试文件名是否合规:比如
my_tests.py不行,得叫test_my.py或my_test.py - 如果测试在
src/tests/下,必须在.vscode/settings.json里写:"python.testing.pytestArgs": ["src/tests/", "-s"] - 如果测试和源码都在
src/下(即src/mymodule/和src/tests/并列),pytestArgs用["src/"]更稳妥 - 改完 settings 后,**必须点测试侧边栏右上角 ↻ 按钮手动刷新**,VSCode 不会自动重扫
Debug Test 断点不命中或报 ModuleNotFoundError
调试时工作目录(cwd)默认是测试文件所在目录,不是项目根,导致 from mypackage import x 失败——这是最常被忽略的根源。
- 在
.vscode/settings.json中加这一行:"python.testing.cwd": "${workspaceFolder}" - 如果源码在
src/,则写:"python.testing.cwd": "${workspaceFolder}/src" - 配合
"python.envFile": "${workspaceFolder}/.env",并在.env里写PYTHONPATH=${workspaceFolder}/src,双重保险 - 断点别打在
def test_xxx():那行,要打在函数体第一句代码上,否则 pytest 加载阶段就跳过了
launch.json 调试单个测试时常见错误
想用 F5 直接调试一个测试函数?launch.json 必须严格按 pytest 模块方式启动,不能当普通脚本跑。
- 删掉
"program"字段,它和"module"冲突 - 必须写
"module": "pytest",等价于终端执行python -m pytest -
"args"是数组,例如:["tests/test_api.py::test_login", "-s"]—— 双冒号分隔文件和函数名 -
"cwd"必须和settings.json里一致,否则 import 依然炸 - 不要在
launch.json里重复设python.defaultInterpreterPath,它由 VSCode 左下角解释器决定
最易漏的其实是两件事:一是改完 settings.json 忘了点那个小小的刷新按钮,二是以为终端能 import 就等于调试器也能 import —— 实际上它们的工作目录和 sys.path 完全独立。
本文共计873个文字,预计阅读时间需要4分钟。
VSCode 默认不支持pytest,需要手动配置测试框架。以下是配置步骤:
怎么让 VSCode 找到 pytest 可执行文件
VSCode 不靠 PATH 查找 pytest,而是依赖 Python 解释器环境里是否真装了它,并通过设置明确指向该环境。
- 先在终端进项目根目录,运行
pip install pytest(推荐在虚拟环境中装) - 左下角点击 Python 版本,用
Ctrl+Shift+P→Python: Select Interpreter选中这个带 pytest 的解释器 - 验证:终端执行
python -m pytest --version能返回版本号才算成功 - 别配
python.testing.pytestPath—— 这个字段已过时,新版扩展只认解释器环境里的模块
为什么测试资源管理器里什么都没显示
VSCode 不自动扫描全项目,它只按你给的路径 + 文件名规则找 test_*.py 或 *_test.py,且默认只查 tests/ 或项目根目录。
- 检查测试文件名是否合规:比如
my_tests.py不行,得叫test_my.py或my_test.py - 如果测试在
src/tests/下,必须在.vscode/settings.json里写:"python.testing.pytestArgs": ["src/tests/", "-s"] - 如果测试和源码都在
src/下(即src/mymodule/和src/tests/并列),pytestArgs用["src/"]更稳妥 - 改完 settings 后,**必须点测试侧边栏右上角 ↻ 按钮手动刷新**,VSCode 不会自动重扫
Debug Test 断点不命中或报 ModuleNotFoundError
调试时工作目录(cwd)默认是测试文件所在目录,不是项目根,导致 from mypackage import x 失败——这是最常被忽略的根源。
- 在
.vscode/settings.json中加这一行:"python.testing.cwd": "${workspaceFolder}" - 如果源码在
src/,则写:"python.testing.cwd": "${workspaceFolder}/src" - 配合
"python.envFile": "${workspaceFolder}/.env",并在.env里写PYTHONPATH=${workspaceFolder}/src,双重保险 - 断点别打在
def test_xxx():那行,要打在函数体第一句代码上,否则 pytest 加载阶段就跳过了
launch.json 调试单个测试时常见错误
想用 F5 直接调试一个测试函数?launch.json 必须严格按 pytest 模块方式启动,不能当普通脚本跑。
- 删掉
"program"字段,它和"module"冲突 - 必须写
"module": "pytest",等价于终端执行python -m pytest -
"args"是数组,例如:["tests/test_api.py::test_login", "-s"]—— 双冒号分隔文件和函数名 -
"cwd"必须和settings.json里一致,否则 import 依然炸 - 不要在
launch.json里重复设python.defaultInterpreterPath,它由 VSCode 左下角解释器决定
最易漏的其实是两件事:一是改完 settings.json 忘了点那个小小的刷新按钮,二是以为终端能 import 就等于调试器也能 import —— 实际上它们的工作目录和 sys.path 完全独立。

