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

带src层的Python项目如何使用pytest?测试代码导入问题求助

解决pytest src目录结构下的导入问题

我之前也踩过这个坑——pytest推荐的这种src分离的项目结构确实更规范,但官方没说清测试代码的导入姿势,导致IDE能识别但运行pytest就报错,核心问题是Python解释器找不到src目录下的包,因为默认的sys.path里没有它。

先再确认下你的项目结构(和官方推荐一致):

my_package/
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── util_module/
│           ├── __init__.py
│           └── utils.py
└── tests/
    ├── __init__.py
    └── test_util_module/
        ├── __init__.py
        └── test_utils.py

下面给你两种靠谱的解决方法:

方法1:用开发模式安装包(推荐)

在项目根目录(my_package/)下运行这条命令:

pip install -e .

这个命令会把你的包以“可编辑”模式安装到Python环境里,相当于把src下的my_package链接到site-packages目录,这样不管是IDE还是pytest运行时,都能直接像导入第三方包一样写代码:

# test_utils.py里的导入示例
from my_package.util_module.utils import your_function

方法2:配置pytest的Python路径

如果不想安装包,也可以通过pytest配置文件指定路径:
在项目根目录创建pytest.ini文件,内容如下:

[pytest]
pythonpath = src

这样每次运行pytest时,它都会自动把src目录加到sys.path里,测试代码里的导入写法和上面一样就行。

⚠️ 不推荐的临时方案:直接在测试文件里手动添加路径(虽然能解决,但代码不优雅,也不利于维护):

# test_utils.py开头加这段
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent.parent / "src"))

# 然后正常导入
from my_package.util_module.utils import your_function

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:41:49