Python单元测试结构化最优方案及模块导入问题解决
解决Python测试与主包导入冲突的优雅方案
方案1:统一使用绝对导入
将main.py等模块内的相对导入(如import utils)替换为基于src包的绝对导入:
from src import utils # 或者针对模块内的具体函数/类 from src.utils import helper_func
这种方式完全适配从根目录运行测试的场景,同时主包运行时也能正常解析导入路径,无需额外配置。
方案2:将项目安装为可编辑模式
在项目根目录执行以下命令:
pip install -e .
该命令会把src目录下的包以可编辑模式安装到Python环境中,相当于把项目包加入了全局路径。之后不管是运行测试还是主程序,所有导入语句都能被正确识别,无需修改任何代码或路径配置。
方案3:通过unittest配置文件指定路径
在tests目录下创建setup.cfg文件,写入以下内容:
[unittest] pythonpath = src
后续从根目录执行python -m unittest discover时,unittest会自动读取该配置,将src目录加入Python路径,既不用修改test/__init__.py,也能解决内部导入的问题。
内容的提问来源于stack exchange,提问作者Liutprand
相关产品推荐
相关产品推荐

