2011-06-26 7 views
11

サブフォルダにグループ化されたdjangoアプリのテストに問題があります。サブフォルダに配置されたdjangoアプリケーションのテスト方法は?

さて、状況を説明しましょう。

スタンダールDjangoプロジェクト構造は次のようになります。プロジェクトの構造は、あなただけのプロジェクトディレクトリでコマンドを入力してAPPNAME1のためのテストを実行することができますスタンダールとき

django_project/ 
--appname1 
--appname2 
--appname3 
--lib 
--tests 
--docs 
settings.py 
etc... 

python2 manage.py test appname1` 

我々はすべて置くことにしましたアプリケーションはサブフォルダにありますので、プロジェクトの構造は次のようになります:

django_project/ 
--apps/ 
----appname1 
----appname2 
----appname3 
--lib 
--tests 
--docs 
settings.py 
etc... 

すべて正常に動作しますが、アプリケーションのテストを実行することはできません。 私は成功せずにコマンドをfolowing試してみました:

python2 manage.py test appname1 
python2 manage.py test apps/appname1 
python2 manage.py test apps.appname1 

サブフォルダに配置された、または我々はそれらを実行するための独自のコマンドを記述する必要があるアプリケーションのためmanage.pyを使用してテストを実行するための任意の方法はありますか?

UPD:私たちは、エラー以下のいる

:私たちのような設定アプリをインストールしている

Traceback (most recent call last): 
    File "manage.py", line 18, in <module> 
    management.execute_manager(settings) 
    File "/opt/python266/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager 
    utility.execute() 
    File "/opt/python266/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/opt/python266/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/opt/python266/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute 
    output = self.handle(*args, **options) 
    File "/opt/python266/lib/python2.6/site-packages/django/core/management/commands/test.py", line 37, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/opt/python266/lib/python2.6/site-packages/django/test/simple.py", line 312, in run_tests 
    suite = self.build_suite(test_labels, extra_tests) 
    File "/opt/python266/lib/python2.6/site-packages/django/test/simple.py", line 244, in build_suite 
    app = get_app(label) 
    File "/opt/python266/lib/python2.6/site-packages/django/db/models/loading.py", line 140, in get_app 
    raise ImproperlyConfigured("App with label %s could not be found" % app_label) 
django.core.exceptions.ImproperlyConfigured: App with label appname1 could not be found 

INSTALLED_APPS = (
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'project_name.apps.appname1', 
'project_name.apps.appname2', 
'project_name.apps.appname3', 
) 

答えて

16

あなたは、あなたのappフォルダの下に、これらのファイルの両方が必要です:

__init__.py 
models.py 

彼らができます空である。

0

apps__init__.pyを持っていることを確認してください。あなたは、アプリ名でテストを実行することができます:これは、Djangoの1.3で動作

python2 manage.py test appname1 

は、私は他のどのバージョンをテストしていません。

+0

我々はdjango1.3を使用して... –

2

どのようなエラーが表示されますか? settings.pyのあなたのINSTALLED_APPSの下には何がありますか?あなたはappsディレクトリ内

INSTALLED_APPS = (
    'django.contrib.auth', 
    ... 
    'apps.appname1', 
    'apps.appname2', 
) 

__init__.pyのようなものを持っている場合

それが動作するはずです。

+0

私は質問に詳細を追加しました。 –

0

これは少し遅れた回答ですが、これ以降の他の覗き見を参照すると、同じ問題が発生していて、空のmodels.pyファイルをアプリに追加する必要があることがわかりました。 (これは、任意のデータベース・テーブルを必要としないが、models.pyは、テストランナーがそれを拾っていなかったことを意味したしませんでした。)

1

ただ、ノート終端文字がでなければなりませんので、settings.pyファイルにはタプルが含まれている「)」ではない「}」

+0

ありがとう、質問が編集されました。 –

関連する問題