Pycharm单元测试没有重组

Pycharm Unit Testing without restructuring

我一直在使用PyCharm来开发一个子模块,以便进入其他几个项目。我有一个包含我的单元测试的Tests目录,我想从PyCharm运行它们,但是当我测试任何包含相对导入的代码时,我得到:

"ValueError:尝试相对导入超出顶级包"

我的结构大致是:

一个
    ____init____.py
    ...

    ____init____.py
    ...
测试
    ____init____.py
    ...

我在B模块中测试一个使用相对导入导入A的函数:

from ..A import some_fn

这个线程在这里pycharm和unittesting - 构造项目引用标记测试目录,但是当我右键单击它时,我只能选择将它标记为无效的源根。

我也无法真正从相对导入到绝对导入,因为它会破坏我在其他项目中将其用作子模块的能力。任何关于如何解决这个问题的建议将非常感激。

更新:我也遇到过这个线程如何在Python模块中正确使用相对或绝对导入?而且我不是解决方案的忠实粉丝(我不希望在try / except块中有镜像导入),但它确实解决了这个问题。我仍然会欣赏更优雅的解决方案,但如果没有,那确实可以解决错误。


这里的问题是AB是不同的包。 您希望它们都是myproj包的子包。

我想你缺少的是父目录中的__init__.py文件。 允许您从A中的某些内容中相对导入B中的内容

1
2
3
4
5
6
myproj/
├── A
│   └── __init__.py
├── B
│   └── __init__.py
└── __init__.py