Twisted Trial Unittest bekommt Importeur
Frage
Ich versuche, ein paar unittestes mit einer Testversion für meine verdrehte Anwendung zu schreiben.
Dies ist so, wie ich vermute, weil der Versuch das aktuelle Arbeitsverzeichnis ändert und wenn ich versuche, mein Modul mit der Objektklasse zu importieren, die ich nicht einteilen möchte, schlägt es fehl.
Ich behalte meine Anwendungsmodule in einem einzigen Verzeichnis, das ich von mir selbst eingerichtet habe. Es befindet sich in keinem Verzeichnis von Pythonpath oder bekannt. In meiner App importieren die Module andere Module, da sie alle im selben Dir sind.
Der Code ähnelt dem:
from twisted.trial import unittest
from twisted.spread import pb
from twisted.internet import reactor, protocol
from MyModule import MyTestSubject
class MyTestSubjectTest(unittest.TestCase):
def setUp(self):
print('\nset up')
def test_startConsoleServer(self):
ts = MyTestSubject()
.... # here goes the body of the test
def tearDown(self):
print('\ntear down')
Der Fehler -MSG sieht also so aus:
Ausnahmen.importerror: Kein Modul namens MyModule
Vielleicht ist dies nicht die Standardmethode, um eine Python -App zu verwenden oder bereitzustellen.
UPDATE: Ich habe gerade eine Problemumgehung dafür herausgefunden. Gehen Sie einfach das App -Verzeichnis an sys.path an, sodass der Importteil wie folgt aussieht:
from twisted.trial import unittest
from twisted.spread import pb
from twisted.internet import reactor, protocol
import sys, os; sys.path.append(os.path.abspath(os.path.curdir))
from MyModule import MyTestSubject
Lösung
Wie sind Ihre Module / Pakete organisiert? Versuchen Sie vielleicht eine Struktur wie die folgende, dann müssen Sie keinen Pfad -Hackery machen:
$ ls -R mypackage
mypackage:
__init__.py __init__.pyc mymodule.py mymodule.pyc test
mypackage/test:
__init__.py __init__.pyc test_mymodule.py test_mymodule.pyc
Führen Sie Tests direkt über dem MyPackage -Paket aus.
$ trial mypackage
mypackage.test.test_mymodule
MyModuleTestCase
test_something ... [OK]
-------------------------------------------------------------------------------
Ran 1 tests in 0.002s
PASSED (successes=1)
IN IN INHALTE TEST_MYMODULE.PY:
from twisted.trial import unittest
from mypackage.mymodule import MyTestSubject
class MyModuleTestCase(unittest.TestCase):
def test_something(self):
pass