6

Cuando trato de ejecutar python manage.py test en mi proyecto Django (1.4), me sale el error:Prueba único proyecto en Django

ERROR: test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/contrib/auth/tests/models.py", line 29, in test_site_profile_not_available 
    del settings.AUTH_PROFILE_MODULE 
    File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 215, in __delattr__ 
    delattr(self._wrapped, name) 
AttributeError: AUTH_PROFILE_MODULE 

Ésta es documented en un error de Django, con una recomendación para aplicaciones específicas única prueba en lugar de todo. Sin embargo, mi proyecto no tiene aplicaciones, el models.py simplemente reside en la raíz del proyecto. Para probar una aplicación específica en Django, parece que this:

$ ./manage.py test animals 
Note that we used animals, not myproject.animals. 

sentido de que no es posible especificar el directorio raíz para probar. ¿Cómo probaría solo mi directorio de proyectos?

Tenga en cuenta que este error es parte de un larger discussion on unit testing discovery.

Respuesta

3

Recomendaría usar django-discover-runner. Le permite especificar una ruta punteada completa para probar.

If you just run ./manage.py test, it'll discover and run all tests underneath the TEST_DISCOVER_ROOT setting (a file system path). If you run ./manage.py test full.dotted.path.to.test_module, it'll run the tests in that module (you can also pass multiple modules). If you give it a single dotted path to a package (like a Django app) like ./manage.py test myapp and that package does not itself directly contain any tests, it'll do test discovery in all submodules of that package.

+2

Comenzando en Django 1.6, hay un [nuevo corredor de descubrimiento de prueba] (https://docs.djangoproject.com/en/dev/releases/1.6/#discovery-of-tests-in-any-test-module) que hace exactamente lo que hace django-discover-runner para 1.5 y abajo. – alfetopito

0

Crear un nuevo directorio llamado aplicaciones, mover toda su aplicación en él, menos el settings.py, manage.py, urls.py y todo lo que se añade de forma predeterminada por startproject django-admin.py y luego ejecutar

./manage.py test apps 

En el futuro, evite mantener toda su aplicación en un directorio. Separarlo en subaplicaciones basadas en la funcionalidad, por este mismo motivo

+0

Pero mi proyecto solo tiene cuatro modelos, y todos parecen más bien relacionados conmigo. No pensé que era incorrecto tener solo un proyecto sin aplicaciones, siempre y cuando no fuera demasiado grande. –

+0

Hasta que llegue otra solución, supongo que solo haré una aplicación y pondré todo allí. –

+0

Separé mi proyecto y me di cuenta de que de hecho fue útil. –

Cuestiones relacionadas