Pycharm单元测试没有重组

时间:2013-11-13 06:24:47

标签: unit-testing pycharm

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

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

我的结构大致是:

一个
____init____.py
...

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

我正在测试B模块中使用相对导入导入A:

的函数

from ..A import some_fn

这里的这个帖子pycharm and unittesting - structuring project引用标记测试目录,但是当我右键单击它时,我只能选择将它标记为无效的源根。

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

更新:我也遇到了这个帖子How to properly use relative or absolute imports in Python modules?,我不是解决方案的忠实粉丝(我不想在try / except块中使用镜像导入),但它确实解决了这个问题。我仍然会欣赏更优雅的解决方案,但如果没有,那确实可以解决错误。

1 个答案:

答案 0 :(得分:1)

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

我认为您缺少的是父目录中的__init__.py文件。允许您从B

中的某些内容相对导入A中的内容
myproj/
├── A
│   └── __init__.py
├── B
│   └── __init__.py
└── __init__.py