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
War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top