2011-06-26 20 views
11

Tengo un problema al probar las aplicaciones django agrupadas en una subcarpeta.¿Cómo probar la aplicación django en la subcarpeta?

Bueno, déjame explicarte la situación.

estructura del proyecto Django Standart es el siguiente:

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

Cuando la estructura del proyecto es Standart puede ejecutar pruebas para appname1 con tan sólo escribir comandos en el directorio del proyecto:

python2 manage.py test appname1` 

decidimos poner todo aplicaciones en subfólogo, por lo que nuestra estructura de proyecto se ve así:

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

Todo funciona bien, pero no podemos ejecutar pruebas para aplicaciones. He intentado sin éxito folowing comandos:

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

¿Hay alguna forma para la realización de pruebas utilizando manage.py para aplicaciones que colocan en subcarpeta, o debemos escribir propio mando para el funcionamiento de ellos?

UPD:

Hemos error siguiente:

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 

Hemos instalado aplicaciones establecer como:

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

Respuesta

16

Es necesario tanto estos archivos en la carpeta de aplicación:

__init__.py 
models.py 

Pueden estar vacío

0

Asegúrese de que tiene un apps__init__.py. Usted debe ser capaz de ejecutar las pruebas por nombre de la aplicación:

python2 manage.py test appname1 

Esto funciona bajo Django 1.3, no he probado ninguna otra versión.

+0

Utilizamos django1.3 ... –

2

¿Qué error obtienes? ¿Y qué tiene bajo su INSTALLED_APPS en settings.py?

si tiene algo así como

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

y __init__.py en el directorio apps entonces debería funcionar.

+0

he añadido detalles a la pregunta. –

0

Esto es un poco tarde como respuesta, pero para referencia futura de otros píos que se encuentran con esto me encontré con el mismo problema, y ​​encontré que necesitaba agregar un archivo models.py vacío a la aplicación. (No se necesita ninguna tablas de la base, pero no tener un models.py significaba que el corredor de prueba no estaba recogiendo.)

1

Sólo una nota, el archivo contiene una tupla settings.py por lo que el carácter de terminación debe ser ')' no '}'

+0

gracias, pregunta editada. –

Cuestiones relacionadas