相互依赖的子模块的软件包组织和单元测试

时间:2019-07-17 07:02:02

标签: python unit-testing organization

我有一个结构如下的代码库:

package/
    module1/
        submoduleA/
            __init__.py
            submoduleA.py
            submoduleA_tests.py
        submoduleB/
            __init__.py
            submoduleB.py
            submoduleB_tests.py
        ...
    utils/
        testing_utils.py

两个__init__文件包含

from submodule<A,B> import *

module1.py中,我有一行

from submoduleB import foo

submoduleA_tests.py内,我从submoduleA.py导入函数,并从utils.testing_utils.py检索常规测试代码。为了从submoduleA目录访问utils目录,submoduleA_tests.py包含了以下内容:

from submoduleA import spam, ham

import sys
sys.path.insert(0, '../..')
from utils.testing_utils import bar, baz

比看起来更糟,甚至更糟糕,此代码甚至不起作用!实际上,如果我尝试从module1_tests.py内部运行submoduleA,则会收到:

~/package/module1/submoduleA/submoduleA.py in <module>
----> 1 from submoduleB import foo

ModuleNotFoundError: No module named 'submoduleB'

这不是我想要过的生活!

问题:用这样的相互依赖的子模块组织程序包的正确方法是什么,以便我可以最小化导入问题并允许其他人以健壮+简化的方式运行单元测试? / p>

0 个答案:

没有答案