【问题标题】:pycharm and unittesting - structuring projectpycharm 和 unittesting - 结构化项目
【发布时间】:2013-05-12 21:14:23
【问题描述】:

我在我的一个大学项目中使用 pycharm,我想将它与 unittest 模块集成,但我在构建我的项目时遇到了问题

这个项目的一部分涉及生成抽象语法树,所以我创建了AST 目录并将__init__.py 放在那里,然后我创建了expression 模块。我想把我的测试放在test/ 子目录中,所以它看起来像这样:

AST/
  __init__.py
  expression.py
  test/
      some_test.py
  utils.py

现在我的AST 中也有模块,称为symbol_table 和称为utils 的模块,示例测试类看起来像

import unittest
from ...AST import expression
from ...AST import utils


class ConstantExpressionTest(unittest.TestCase):

    def testConstantExpressionCheck(self):
        constantExpression = expression.ConstantExpression(17, 5, utils.TYPES.INT)
        self.assertTrue(constantExpression.check())

当我右键单击此文件并选择 Run Unittest in ... 时出现错误:

/usr/bin/python2.7 /home/xubuntu/Downloads/pycharm-2.7.2/helpers/pycharm/utrunner.py /home/xubuntu/Przedmioty/VI/kompilatory/tk-projekt/src/AST/test/test_constant_expression.py true
Testing started at 12:06 PM ...
Traceback (most recent call last):
  File "/home/xubuntu/Downloads/pycharm-2.7.2/helpers/pycharm/utrunner.py", line 110, in <module>
    modules = [loadSource(a[0])]
  File "/home/xubuntu/Downloads/pycharm-2.7.2/helpers/pycharm/utrunner.py", line 34, in loadSource
    module = imp.load_source(moduleName, fileName)
  File "/home/xubuntu/Przedmioty/VI/kompilatory/tk-projekt/src/AST/test/test_constant_expression.py", line 2, in <module>
    from ...AST import utils
ValueError: Attempted relative import in non-package

Process finished with exit code 1

我已阅读有关此问题的信息,如果我理解正确,此文件将被视为顶级包中的文件,因此我无法使用任何相关导入。

但如果是这样的话,我怎样才能从 pycharm 运行单元测试并保持我当前的项目结构?

如果我没记错的话,将测试放在子包中很受欢迎(http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html)所以一定有某种解决方案

【问题讨论】:

    标签: python unit-testing pycharm


    【解决方案1】:

    嗯,这有点傻,我发现 pycharm 将项目的根目录添加到路径中,这样我就可以从我的项目的根目录中使用正常的导入。

    所以例如我可以写

    from AST import expression 在我的some_test 文件中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2013-07-06
      • 2017-12-25
      • 2014-01-22
      相关资源
      最近更新 更多