怎么在VSCode中配置Python的单元测试?_Pytest与Unittest框架【教程】
发布时间 - 2026-01-21 00:00:00 点击率:次VSCode需正确配置Python解释器、启用对应测试框架(pytest/unittest)并遵循文件命名规则,才能在侧边栏集成测试发现与运行;关键在于解释器路径、settings.json声明及测试结构匹配。
VSCode 本身不自带 Python 单元测试运行能力,但能通过配置 settings.json 和正确安装依赖,让测试发现、运行、调试完全集成到侧边栏和命令面板中——关键不是装插件,而是让 VSCode 知道“测试在哪、用什么跑、怎么找”。
确认 Python 扩展已启用且解释器正确
VSCode 的 Python 测试功能由官方 ms-python.python 扩展提供,不是第三方插件。如果测试图标(⚡ 图标)不出现,大概率是解释器没选对或扩展未激活。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Python: Select Interpreter,选中你项目实际使用的 Python 环境(如./venv/bin/python或conda env路径) - 确保该环境下已安装
pytest或unittest:在终端执行pip list | grep -i pytest或python -m unittest --help验证 - 若使用 conda,注意 VSCode 可能默认选系统 Python,而非 conda env 中的解释器——必须手动指定
在 settings.json 中声明测试框架类型和路径
VSCode 不会自动猜你用的是 pytest 还是 unittest,必须显式声明。配置写在工作区或用户级 settings.json 中,优先级:工作区 > 用户。
- 打开设置(
Ctrl+,),点击右上角「打开设置 (JSON)」图标,添加以下字段: - 用
pytest:"python.testing.pytestEnabled": true, "python.testing.pytestArgs": [ "./tests", "-v" ],其中./tests是你的测试目录路径,可替换为"src/tests"等;-v是可选参数,加了才显示详细输出 - 用
unittest:"python.testing.unittestEnabled": true, "python.testing.unittestArgs": [ "-s", "./tests", "-p", "test_*.py" ],-s指定起始目录,-p指定匹配模式(注意:不支持**/test_*.py这种 glob,只认单层通配) - 禁用另一个框架:比如启用了
pytest,务必设"python.testing.unittestEnabled": false,否则可能冲突报错Test discovery failed: multiple test frameworks enabled
测试文件命名与结构必须符合框架约定
VSCode 的测试发现完全依赖底层框架规则。即使配置全对,文件放错位置或命名不对,测试列表就是空的。
-
pytest默认只找:test_*.py或*_test.py文件,且文件内函数或类名需以test_开头;测试目录下建议有__init__.py(非必须但避免导入问题) -
unittest要求更严格:测试类必须继承unittest.TestCase,方法名必须是test_*,且文件名必须匹配unittestAr中的
gs
-p模式(例如设了"test_*.py",就不能叫example_tests.py) - 常见坑:
tests/目录不在 Python path 中 → 导入被测模块失败;解决办法是在测试文件开头加:import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent))
或在根目录放pyproject.toml声明[tool.setuptools.py_modules]
运行与调试测试时注意环境隔离
点击测试旁的 ▶️ 或 ? 图标时,VSCode 会调用当前选中的 Python 解释器执行命令。如果你在虚拟环境中安装了 pytest,但解释器指向全局 Python,就会报 ModuleNotFoundError: No module named 'pytest'。
- 检查底部状态栏:左边应显示类似
Python 3.11.5 ('venv': venv),括号里有环境标识才算生效 - 调试单个测试函数时,VSCode 会生成临时 launch config,但断点只在测试代码里有效——被测模块若在其他包中,需确保其源码可访问(不能只装 wheel)
- 想看
print()输出?在pytestArgs加-s(捕获关闭),或加--log-cli-level=INFO查看日志
最常卡住的地方不是配置语法,而是解释器路径和测试文件结构不匹配。每次改完 settings.json,记得重启 VSCode 窗口(不是重载窗口),再点「Python Test Explorer」侧边栏刷新按钮——它不会自动轮询配置变更。
# linux
# python
# vscode
# js
# json
# windows
# mac
# ai
# macos
# win
# 虚拟环境
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
js代码实现下拉菜单【推荐】
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
利用vue写todolist单页应用
微信小程序 input输入框控件详解及实例(多种示例)
微信小程序 scroll-view组件实现列表页实例代码
linux top下的 minerd 木马清除方法
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
利用JavaScript实现拖拽改变元素大小
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
想要更高端的建设网站,这些原则一定要坚持!
jquery插件bootstrapValidator表单验证详解
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
无锡营销型网站制作公司,无锡网选车牌流程?
如何用景安虚拟主机手机版绑定域名建站?
如何快速辨别茅台真假?关键步骤解析
装修招标网站设计制作流程,装修招标流程?
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何做网站制作流程,*游戏网站怎么搭建?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
如何在万网ECS上快速搭建专属网站?
如何在IIS中新建站点并解决端口绑定冲突?
如何在服务器上配置二级域名建站?
如何快速选择适合个人网站的云服务器配置?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何在VPS电脑上快速搭建网站?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
中山网站制作网页,中山新生登记系统登记流程?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
Laravel如何升级到最新版本?(升级指南和步骤)
如何在建站之星绑定自定义域名?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
微信小程序 wx.uploadFile无法上传解决办法
Android 常见的图片加载框架详细介绍
香港服务器网站生成指南:免费资源整合与高速稳定配置方案


