VSCode无法识别抛出异常的单元测试,显示0/0通过,如何解决?
问题:VSCode Python单元测试无法正确显示失败结果
开发环境
vscode 1.80.1 python 3.10 python extension for vscode v2023.12.0
测试文件代码
import unittest class MyTestCase(unittest.TestCase): def test_say_hello(self) -> None: raise Exception("test")
VSCode设置
{ "python.testing.unittestArgs": [ "-v", "-s", "./runner", "-p", "test_*.py" ], "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": true, }
问题现象
运行测试时,预期VSCode会因代码抛出的异常显示测试失败,但实际测试面板显示“0/0测试通过”;若之前测试通过,还会保留绿色标记。测试结果面板仅显示“Finished running tests!”,无其他输出。调试模式下能看到错误输出,但仍不标记测试失败。手动在VSCode外运行单元测试可正常显示错误。
解决方案
- 核对测试文件路径与命名:确认测试文件放在
./runner目录下,且文件名符合test_*.py规则。如果文件位置或命名不匹配,VSCode的测试探索器会找不到测试用例,导致显示0测试。 - 刷新测试探索器:点击VSCode测试面板顶部的刷新按钮,强制重新扫描所有测试文件,避免缓存导致的测试用例不更新。
- 统一Python解释器:检查VSCode左下角状态栏显示的Python版本,确保和你手动运行测试时使用的解释器一致。环境不一致可能导致测试解析异常。
- 调整unittest参数:尝试简化或修正
unittestArgs配置,比如用绝对路径${workspaceFolder}/runner替代相对路径./runner,避免路径解析问题。示例配置:{ "python.testing.unittestArgs": [ "-s", "${workspaceFolder}/runner", "-p", "test_*.py" ], "python.testing.pytestEnabled": false, "python.testing.unittestEnabled": true } - 清除测试缓存:打开命令面板(Ctrl+Shift+P),执行
Python: Clear Test Cache命令,清除旧缓存后重新运行测试。 - 更新Python扩展:检查VSCode扩展市场是否有Python扩展的更新版本,新版本可能修复了测试解析相关的Bug。
内容的提问来源于stack exchange,提问作者MyUsername112358
相关产品推荐
相关产品推荐

