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

2024-10-02 10:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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检索通用测试代码。为了从子模块目录访问utils目录,submoduleA_tests.py包含以下内容:

from submoduleA import spam, ham

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

更糟糕的是,这个代码根本不起作用!事实上,如果我试图从submoduleA内运行module1_tests.py,我会收到:

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

ModuleNotFoundError: No module named 'submoduleB'

这不是我想要的生活方式

问题:组织包含这些相互依赖的子模块的包的正确方法是什么,这样我就可以最大限度地减少导入问题,并允许其他人以健壮+精简的方式运行单元测试


Tags: 模块代码frompyimport目录packagefoo

热门问题