Twisted Trial UnittestはImporterRorを取得します
質問
ツイストアプリケーションのトライアルを使用して、一致しないものを作成しようとしています。最初の「空の」トライアルの無地のクラスを書きましたが、それを実行しようとすると、アプリモジュールをインポートするためのImporterRorを取得します。
これは、トライアルが現在のワーキングディレクトリを変更し、失敗したいオブジェクトクラスでモジュールをインポートしようとすると、失敗したいので、私が疑うとおりです。
アプリケーションモジュールを自分で設定した単一のディレクトリに保持します。これは、PythonPathのディレクトリにはありません。または、アプリでは、モジュールがすべて同じdirにあるため、他のモジュールをインポートします。
コードはこれに似ているように見えます:
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')
したがって、エラーMSGは次のようになります。
例外。Importerror:mymoduleという名前のモジュールはありません
たぶん、これはトライアルを使用したり、Pythonアプリを展開する標準的な方法ではありません。
更新:私はこのための回避策を見つけました。アプリディレクトリをsys.pathに追加するだけで、インポート部分が次のようになります。
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
解決
モジュール /パッケージはどのように整理されていますか?おそらく、次のような構造を試してみてください。そうすれば、パスハッカーを行う必要はありません。
$ 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
MyPackageパッケージ監督のすぐ上からテストを実行します。
$ trial mypackage
mypackage.test.test_mymodule
MyModuleTestCase
test_something ... [OK]
-------------------------------------------------------------------------------
Ran 1 tests in 0.002s
PASSED (successes=1)
内部ファイルtest_mymodule.py:
from twisted.trial import unittest
from mypackage.mymodule import MyTestSubject
class MyModuleTestCase(unittest.TestCase):
def test_something(self):
pass
所属していません StackOverflow