在不使用 hacky 解决方案的情况下处理 Python3 中的单元测试和本地模块导入的最佳方法

问题描述

我知道这是社区中的热门话题,很多人都问过同样的问题。不幸的是,在我阅读了大量这些主题之后,我还没有找到合适的解决方案。 我请求您的支持找到处理单元测试和导入的最佳方法,这样我就不会收到流行的消息“找不到模块“a.py”...”

我的项目结构是:

my_project
    ├── some_script.sh
    ├── log
    ├── README.md
    ├── requirements.txt
    ├── src
    │   ├── __init__.py
    │   ├── config.yml
    │   ├── a.py
    │   ├── b.py
    │   ├── c.py
    ├── tests
    │   ├── __init__.py
    │   ├── test_a.py
    │   ├── test_b.py
    │   ├── test_c.py

关于导入,我使用这个架构:

a.py

import b
import c

test_a.py

from src import a

当我运行测试时,我使用自动发现,所以我会做一些类似的事情:

cd my_project
python3 -m unittest -v

这样目录 my_project 应该会自动包含在 sys 路径中,python 应该会在其中找到所有导入的模块。

问题是,当我在“test_a.py”中导入模块“a.py”时,python 抱怨找不到模块 b 和 c。这是非常合理的,因为模块“b.py”和“c.py”在“src”内部而不是在“tests”内部。 我应该如何以最干净的方式处理导入和单元测试? 使用最干净的意思是不破解 pythonpath 或在我的 python 代码中将目录添加到 syspath。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)