【问题标题】:Pycharm Unit Testing without restructuring无需重构的 Pycharm 单元测试
【发布时间】:2013-11-25 15:28:17
【问题描述】:

我一直在使用 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 块中导入镜像),但它确实在一定程度上解决了问题。我仍然希望有一个更优雅的解决方案,但如果不是,那确实可以解决错误。

【问题讨论】:

    标签: unit-testing pycharm


    【解决方案1】:

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

    我认为您所缺少的只是父目录中的__init__.py 文件。允许你从A中的东西相对导入B中的东西

    myproj/
    ├── A
    │   └── __init__.py
    ├── B
    │   └── __init__.py
    └── __init__.py
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-16
      • 2016-08-19
      • 2018-09-20
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2022-12-13
      相关资源
      最近更新 更多