You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中Python unittest导入自定义模块后无法发现测试用例

VS Code中导入自定义模块后unittest无法发现测试的问题

问题场景

我使用最新版本的VS Code,有一个测试文件test/test_whatever.py,初始代码如下:

import unittest   
class Test_TestWhatever(unittest.TestCase):

    def test_whatever(self):
        self.assertEqual(1, 1)

if __name__ == '__main__':
    unittest.main()

一开始在资源管理器中右键该文件选择「Run Tests」,可以正常发现并运行测试。但当我修改文件添加import binarySearch语句后(即使测试方法并未调用该模块),VS Code就提示No tests found in the selected file or folder。

当前文件结构

.\src\binarySearch.py 
.\test\test_whatever.py

当前settings.json配置

{
    "python.testing.unittestArgs": [
        "-v",
        "-s",
        "./test",
        "-p",
        "test_*.py"
    ],
    "python.testing.pytestEnabled": false,
    "python.testing.unittestEnabled": true,
    "python.analysis.extraPaths": [
        "./src"
    ]
}

疑问

是否需要遵循特定的文件/文件夹结构才能解决这个问题?


问题原因及解决方法

你遇到的问题并非必须严格遵循特定文件结构,而是模块导入时的路径问题导致测试加载失败:

  1. python.analysis.extraPaths仅用于代码分析:这个配置只是让VS Code的语言服务能找到src下的模块,不会影响测试运行时的Python环境路径。当unittest运行测试时,Python解释器找不到binarySearch模块,加载测试文件时抛出导入错误,导致VS Code无法识别测试用例。

  2. 解决步骤:

    • 方法一:修改测试文件中的导入路径
      在test_whatever.py中添加路径处理,让Python能找到项目根目录:
      import sys
      from pathlib import Path
      # 将项目根目录加入Python路径
      sys.path.append(str(Path(__file__).parent.parent))
      
      import unittest
      import binarySearch  # 现在可以正常导入
      
      class Test_TestWhatever(unittest.TestCase):
          def test_whatever(self):
              self.assertEqual(1, 1)
      
      if __name__ == '__main__':
          unittest.main()
      
    • 方法二:配置测试运行的环境路径
      在VS Code的settings.json中,为unittest添加环境变量配置,把src目录加入PYTHONPATH:
      {
          "python.testing.unittestArgs": [
              "-v",
              "-s",
              "./test",
              "-p",
              "test_*.py"
          ],
          "python.testing.pytestEnabled": false,
          "python.testing.unittestEnabled": true,
          "python.analysis.extraPaths": [
              "./src"
          ],
          "python.testing.env": {
              "PYTHONPATH": "${workspaceFolder}/src:${env:PYTHONPATH}"
          }
      }
      
    • 方法三:将src目录设为Python源代码根目录
      在VS Code中,右键src文件夹,选择「将文件夹添加到Python路径」(Add Folder to Python Path),这样测试运行时就能自动识别该目录下的模块。

总结

不需要强制改变现有文件结构,只要确保测试运行时Python解释器能找到binarySearch模块,就能恢复测试识别功能。

内容的提问来源于stack exchange,提问作者BaltoStar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:45:15