2013-05-17 3 views
7

ich PyCharm bei einem meiner Universität Projekten verwenden und ich wollte es mit unittest Modul integriert, aber ich habe ein Problem mit meinem ProjektPyCharm und Unittesting - Strukturierung Projekt

Teil des Projektes Strukturierung abstrakte Syntax umfasst die Bildung von Bäume, so erstellte ich AST Verzeichnis und legte __init__.py dort, dann habe ich expression Modul erstellt. Ich wollte meine Tests in test/ Unterverzeichnis setzen, so würde es so aussehen:

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

jetzt habe ich das Modul auch in meinem AST genannt symbol_table und Modul utils, Beispiel Test-Klasse sieht aus wie

genannt
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()) 

wenn ich direkt auf diese Datei klicken und Run Unittest in ... ich erhalte Fehler:

/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 

Ich habe über dieses Problem gelesen und wenn ich das richtig verstehe, wird diese Datei so behandelt, als wäre sie im Top-Level-Paket, so dass ich keine relativen Importe verwenden kann.

Aber wenn das der Fall ist, wie kann ich Komponententests von pycharm ausführen und auch meine aktuelle Projektstruktur beibehalten?

Wenn ich mich nicht täuscht, Tests in Unterpaket setzt ziemlich beliebt ist (http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html), so muss es irgendeine Art von Lösung

Antwort

2

Gut sein, dass ein bisschen albern ist, fand ich heraus, dass PyCharm die Wurzel fügt von dem Projekt zu Pfad, so kann ich nur normale Importe von der Wurzel meines Projekts verwenden.

zum Beispiel So kann ich

from AST import expression in meiner some_test Datei schreiben

+5

PyCharm können Sie Ordner als 'Test root' markieren. –