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

Python单元测试目录结构问题:无法导入src模块

Python单元测试模块导入问题解决办法

项目目录结构

my-project
   src/
       __init__.py
       script.py
   test/
       __init__.py
       test_script.py

测试代码(test_script.py)

from src.script import my_object
import unittest

class TestClass(unittest.TestCase):
    
    def test_script_object(self):
        # 单元测试逻辑
        pass

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

(注:你代码里的__name__ == 'main'存在拼写错误,正确写法是__name__ == '__main__',这个小问题也会影响测试执行)

遇到的错误

Traceback (most recent call last):
  File "test_script.py", line 4, in <module>
    from src.script import my_object
ModuleNotFoundError: No module named 'src'

解决方案与优化建议

方法1:从项目根目录运行测试

无需修改任何代码,直接在my-project目录下执行命令:

python -m unittest test/test_script.py

如果使用pytest框架(需先执行pip install pytest安装),可以用:

pytest test/test_script.py -v

这种方式会自动将项目根目录加入Python的模块搜索路径,自然能识别src模块。

方法2:使用相对导入

修改test_script.py的导入语句为相对路径:

from ..src.script import my_object

但这种方式不能直接运行test_script.py,必须从项目根目录以模块方式执行:

python -m unittest test.test_script

方法3:设置PYTHONPATH环境变量

运行测试前,把项目根目录添加到PYTHONPATH中:

  • Linux/macOS终端:
    export PYTHONPATH=/绝对路径/to/my-project
    python test/test_script.py
    
  • Windows命令提示符:
    set PYTHONPATH=C:\绝对路径\to\my-project
    python test\test_script.py
    

这样Python会优先从该路径搜索模块,无需修改代码即可正常导入。

方法4:把src做成可安装包(推荐长期项目使用)

在my-project根目录下创建pyproject.toml文件,内容如下:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my-project"
version = "0.1.0"
packages = ["src"]

然后执行本地安装命令:

pip install -e .

安装完成后,无论在哪个目录,都能直接import src.script,测试代码无需修改,直接运行即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:25:18