2016-09-01 8 views
2

現在正常に動作しているmy_appに一般的なカスタムTestCaseを使用したいと思います。私は、次の単純化されたディレクトリ構造を持っている:Python manage.pyテストアプリケーションを使用してカスタムSimpleTestCaseの子にImportErrorを実行

my_app 
├── tests 
│ ├── __init__.py 
│ └── test_views 
│  ├── __init__.py 
│  ├── custom_test.py 
│  ├── registration 
│  │ ├── __init__.py 
│  │ ├── test_login.py 
└── views 
    |── __init__.py 
    ├── registration 
    │ ├── __init__.py 
    │ ├── login.py 

このようなCustomTestクラスを見て:

from django.test import SimpleTestCase 
from django.test.client import Client 


class CustomTest(SimpleTestCase): 

    def setUp(self): 
     self.client = Client() 

は私が起動するテストは、次のいずれかです。

from tests.test_views.custom_test import CustomTest 

class Test_Login(CustomTest): 

    def test_thing(self): 
     self.assertTrue(True) 

「MY_APP 'ディレクトリがpythonpathにあり、すべてのモジュールにinit .pyファイルがあります。 Djangoはtest_login.pyでエラーを見つけることができます(たとえば、私がCustomTestを存在しないものに変更した場合)。実際の問題が発生する前にtest_login.pyが読み込まれ、正常にCustomTestをインポートして使用します。私がテストを起動したいときには:

python manage.py test my_app 

私は次のエラーを取得する:

ImportError: Failed to import test module: my_app.tests.test_views.registration.test_login 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/unittest/loader.py", line 254, in _find_tests 
    module = self._get_module_from_name(name) 
    File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name 
    __import__(name) 
    File "~/workspace/my_app/my_app/tests/test_views/registration/test_login.py", line 7, in <module> 
    from tests.tests_views.my_app_test.custom_test import CustomTest 
ImportError: No module named tests_views.my_app_test.custom_test 

任意のアイデア?

+0

は 'CustomTest'のためのあなたのインポートパスにアプリケーション名を追加します。少なくともそれは私のために働く方法です。したがって: 'from my_app.tests.tests_views.my_app_test.custom_test import CustomTest' – elethan

答えて

2

は、インポートの左側にアプリケーション名を置く:

from myapp.tests.test_views.custom_test import CustomTest 
+0

** manage.py **ファイルと同じレベルに** __ init __。py **があることを確認して削除してください。 – azk4n

+0

ありがとう!どうやら、設定中のsys.pathを変更しても、テスト中は動きません。 –

関連する問題