我的包装布局如下(as recommended here):
module/
lib/
__init__.py
module.py
util.py
tests/
env.py
test_util.py
文件util.py
包含一个实用程序功能f()
,该功能在程序包中多次重复使用。它不向用户公开,因为它在包的上下文之外没有意义,但是为它编写单元测试确实有意义。
文件env.py
包含以下几行:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
如何设置我的软件包以使单元测试可以访问util.f
?
更新:在评论中前后往复并进行了一些测试之后,看来还可以通过添加以下内容将lib
目录添加到系统路径:
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../lib')))
对env.py
的可以解决问题。但是,这似乎破坏了相对进口。我现在可以没有相对的进口,但这是建立单元测试的标准/稳健方法,还是从长远来看会打破?