0

Python パッケージとして編成された Django の再利用可能なアプリをテストしようとしています。ディレクトリツリーは次のとおりです。

reusableapp
├── __init__.py
└── submodule
    ├── __init__.py
    └── app
        ├── __init__.py
        ├── models.py
        ├── tests.py
        └── views.py

私のDjangoのバージョンは1.5です。テスト用のアプリケーションを選択するために、ここで公開されているものに基づいた次のコードがあります。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Description: Execute tests from outside Django's project
"""


import os
import sys

from django.conf import settings


DIRNAME = os.path.dirname(__file__)

INSTALLED_APPS = [
    "reusableapp.submodule.app"
]

settings.configure(
    DEBUG=True,
    DATABASES={
        "default": {
            "ENGINE": "django.db.backends.sqlite3",
        }
    },
    INSTALLED_APPS=tuple(INSTALLED_APPS),
    CACHES={
        "default": {
            "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
        }
    },
)


if __name__ == "__main__":

    from django.test.simple import DjangoTestSuiteRunner

    test_runner = DjangoTestSuiteRunner(verbosity=1)
    failures = test_runner.run_tests(INSTALLED_APPS)
    if failures:
        sys.exit(failures)

しかし、実行すると、次のエラーが発生しました(virtualenvを使用):

(reusableapp) $ python runtests.py
Traceback (most recent call last):
  File "runtests.py", line 48, in <module>
    failures = test_runner.run_tests(INSTALLED_APPS)
  File "/var/lib/virtualenvs/reusableapp/local/lib/python2.7/site-packages/django/test/simple.py", line 369, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/var/lib/virtualenvs/reusableapp/local/lib/python2.7/site-packages/django/test/simple.py", line 254, in build_suite
    suite.addTest(build_test(label))
  File "/var/lib/virtualenvs/reusableapp/local/lib/python2.7/site-packages/django/test/simple.py", line 102, in build_test
    app_module = get_app(parts[0])
  File "/var/lib/virtualenvs/reusableapp/local/lib/python2.7/site-packages/django/db/models/loading.py", line 160, in get_app
    raise ImproperlyConfigured("App with label %s could not be found" % app_label)
django.core.exceptions.ImproperlyConfigured: App with label reusableapp could not be found

再利用可能なアプリとフォーマットについて Django のドキュメントを検索しましたが、「Django プロジェクトでの使用を特に意図した Python パッケージにすぎません。アプリは、models.py を持つなどの一般的な Django 規則を使用することもできます。ファイル"

再利用可能なアプリ形式を明示する明示的な規則/要件を知っていますか? そうでない場合、このような状況に直面したことがありますか? アプリを強制的にロードする方法はありますか?

ありがとうございます。よろしくお願いします。

4

1 に答える 1

0

アプリのパスが /parentdir/reusableapp/submodule/app だとしましょう

最初に、Python インタープリターで次のコマンドを実行して、PYTHONPATH に /parentdir/ があることを確認します。

>>> import os
>>> os.environ['PYTHONPATH'].split(os.pathsep)

おそらく、このパスは表示されないでしょう。django プロジェクトの manage.py ファイルに次の行を追加してください。

sys.path.append('/parentdir/')

また、-
TEMPLATE_LOADERS で django.template.loaders.app_directories.Loader の設定を確認しましたか? まだ存在しない場合は、次のように追加してみてください -

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

テンプレート サブディレクトリに関する django ドキュメント - https://docs.djangoproject.com/en/dev/ref/templates/api/#using-subdirectories

それが役立つことを願っています。

于 2013-11-02T17:26:40.340 に答える