2011-06-26 29 views
11

Tôi gặp sự cố khi thử nghiệm các ứng dụng django được nhóm trong thư mục con.Làm thế nào để kiểm tra ứng dụng django được đặt trong thư mục con?

Vâng, hãy để tôi giải thích tình huống.

Standart cấu trúc dự án django trông như thế này:

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

Khi cấu trúc của dự án là standart bạn có thể chạy thử nghiệm cho appname1 chỉ bằng cách gõ lệnh trong dir dự án:

python2 manage.py test appname1` 

Chúng tôi quyết định đặt tất cả ứng dụng trong phân mục con, vì vậy cấu trúc dự án của chúng tôi trông giống như sau:

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

Tất cả đều hoạt động tốt, nhưng chúng tôi không thể chạy thử nghiệm cho ứng dụng. Tôi đã thử folowing lệnh không thành công:

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

Có cách nào cho chạy thử nghiệm sử dụng manage.py cho các ứng dụng được đặt trong thư mục con, hoặc chúng ta nên viết lệnh riêng cho chạy chúng?

UPD:

Chúng tôi đã lỗi sau:

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 

Chúng tôi đã cài đặt ứng dụng thiết lập như:

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', 
) 

Trả lời

16

Bạn cần cả những file này trong thư mục ứng dụng của bạn:

__init__.py 
models.py 

Họ có thể trống rỗng.

0

Hãy chắc chắn rằng apps__init__.py. Bạn sẽ có thể chạy thử nghiệm theo tên ứng dụng:

python2 manage.py test appname1 

Điều này hoạt động dưới Django 1.3, tôi chưa thử nghiệm bất kỳ phiên bản nào khác.

+0

Chúng tôi sử dụng django1.3 ... –

2

Bạn gặp phải lỗi gì? Và bạn có gì dưới số INSTALLED_APPS trong số settings.py?

nếu bạn có một cái gì đó giống như

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

__init__.py trong thư mục apps sau đó nó sẽ làm việc.

+0

Tôi đã thêm thông tin chi tiết cho câu hỏi. –

0

Đây là một chút muộn như là một câu trả lời, nhưng để tham khảo trong tương lai của peeps khác đi qua này tôi đã chạy vào cùng một vấn đề, và thấy rằng tôi cần phải thêm một tập tin rỗng models.py vào ứng dụng. (Nó không cần bất kỳ bảng cơ sở dữ liệu, nhưng không có một models.py nghĩa là Á hậu thử nghiệm đã không chọn nó lên.)

1

Chỉ cần một lưu ý, các tập tin settings.py chứa một tuple sao cho nhân vật chấm dứt nên ')' không '}'

+0

cảm ơn, câu hỏi đã được chỉnh sửa. –

Các vấn đề liên quan