VS Code配置unittest后触发pytest测试发现问题求助
VS Code强制调用pytest而非配置的unittest框架进行测试发现
环境信息
- VS Code版本:1.80.0、1.79.2、1.79.1(用户安装版)
- Python扩展版本:v2023.12.0
- Python版本:3.9.13、3.10.6、3.10.11
- 系统:Windows 10 Version 22H2(OS Build 19045.3086)
复现步骤
严格遵循VS Code官方Python测试文档操作:
- 创建新文件夹并在VS Code中打开
- 创建
inc_dec.py文件 - 使用纯净安装的Python 3.9+作为项目环境
- 添加
tests文件夹,在其中创建test_unittest.py文件和空的__init__.py文件 - 配置Python测试:选择unittest框架、指定
tests文件夹、匹配模式设为test_*.py
异常现象
尽管明确配置使用unittest,VS Code仍触发“Pytest Discovery Error”,Python输出日志显示实际执行了pytest命令:
2023-07-14 13:08:29.745 [info] Running discovery for unittest using the new test adapter. 2023-07-14 13:08:29.771 [info] > C:\Python\3.10.11\python.exe -m pytest -p vscode_pytest --collect-only
预期行为:unittest测试用例被正常发现,且支持调试。
已尝试的无效方案
- 重启VS Code及系统
- 回退至旧版VS Code
- 更换不同Python版本
- 使用此前正常工作的虚拟环境
- 在PyCharm中可正常运行测试,但因Jupyter Notebook需求无法切换
- 执行
python -m unittest discover -v -s . -p "test_*.py"可正常运行测试,但IDE无法发现用例 - 删除
__pycache__文件夹 - 移除并重新创建
tests文件夹
额外说明
- 现有旧项目仍能发现unittest测试,但调试时无法命中断点,运行测试时会报错子文件夹中的源文件
- 调试普通Python文件可正常命中断点
- PyCharm社区版可正常测试和调试,但不支持Jupyter Notebook,无法满足需求
解决方案尝试
1. 手动强制指定测试配置
在项目根目录的.vscode/settings.json中添加以下配置,明确禁用pytest、启用unittest:
{ "python.testing.unittestEnabled": true, "python.testing.pytestEnabled": false, "python.testing.unittestArgs": [ "-v", "-s", "./tests", "-p", "test_*.py" ] }
保存后重启VS Code,重新触发测试发现。
2. 降级Python扩展版本
当前使用的Python扩展v2023.12.0可能存在适配bug,尝试降级至更早版本:
- 打开VS Code扩展面板,找到Python扩展
- 点击扩展右侧齿轮图标,选择「Install Another Version...」
- 选择v2023.10.1版本安装,重启VS Code后测试
3. 关闭新测试适配器特性
日志显示使用了new test adapter,尝试禁用该实验性功能,在.vscode/settings.json中添加:
"python.testing.experimentalTestAdapter": false
保存后重启VS Code重新触发测试发现。
4. 检查并清理Python环境中的pytest
即使未主动安装,依赖可能间接引入pytest,执行命令检查:
pip list | findstr pytest
若存在pytest,执行卸载:
pip uninstall pytest -y
之后重启VS Code测试。
5. 重置工作区配置
删除项目根目录的.vscode文件夹(备份后操作),重新打开项目并配置unittest测试环境,避免旧配置干扰。
内容的提问来源于stack exchange,提问作者Colin Frame
相关产品推荐
相关产品推荐

