2013-05-17 5 views
7

私は私の大学のプロジェクトのひとつでpycharmを使用していると私はunittestモジュールでそれを統合したかったが、私はこのプロジェクトの私のプロジェクトpycharmと単体テスト - 構造化プロジェクト

一部は抽象構文を生成する必要構築に問題があります私はASTディレクトリを作成し、そこに__init__.pyを入れて、expressionモジュールを作成しました。私はそれが次のようになりますので、test/サブディレクトリに私のテストを置くことを望んでいた:

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

今、私はまた私のASTでモジュールいる例のテストクラスが

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()) 
のように見え、 utilsと呼ば symbol_tableとモジュールと呼ばれます

私は右、このファイルをクリックして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)かなり人気があるので、ソリューション

答えて

2

のいくつかの種類が存在しなければならないまあ、それは少し愚かで、私はpycharmがルートを追加することが判明しました私はプロジェクトのルートから通常のインポートを使用することができます。

だから、例えば私は書くことができます私のsome_testファイルに

from AST import expression

+5

pycharmあなたは「テストルート」としてフォルダにマークを付けることができます。 –