2011-06-26 24 views
11

我在測試django應用程序分組在子文件夾中有問題。如何測試放置在子文件夾中的django應用程序?

那麼,讓我解釋一下情況。

斯坦達特Django項目結構如下:

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

當項目結構是非標準你可以通過在項目目錄鍵入命令運行APPNAME1測試:

python2 manage.py test appname1` 

我們決定把所有我們的項目結構如下所示:

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

所有工作正常,但我們無法運行應用程序的測試。 我曾嘗試如下因素的命令沒有成功:

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

您您的應用程序文件夾下需要這兩個文件:

__init__.py 
models.py 

他們可以空着。

0

確保apps__init__.py。您應該能夠通過應用程序名稱,運行測試:

python2 manage.py test appname1 

這工作的Django 1.3下,我沒有測試任何其他版本。

+0

我們使用django1.3 ... –

2

你會得到什麼錯誤?你有什麼INSTALLED_APPSsettings.py下有什麼?

,如果你有在apps目錄類似

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

__init__.py那麼它應該工作。

+0

我已經添加了細節問題。 –

0

這有點晚,作爲答案,但爲了將來的參考其他窺視遇到這個我遇到了同樣的問題,並發現我需要添加一個空的models.py文件到應用程序。 (它不需要任何數據庫表,但沒有一個models.py意味着測試運行沒有拿起它。)

1

剛一說明,settings.py文件包含一個元組,因此終止字符應該是「)」而不是「}」

+0

謝謝,編輯過的問題。 –

相關問題