test - pruebas unitarias con django
Organizando pruebas unitarias Django (4)
En este momento tengo mis pruebas de la unidad Django viviendo en mcif/tests.py
. Preferiría tener algo más parecido a mcif/tests/foo_test.py
, mcif/tests/bar_test.py
, etc., pero si organizo mis pruebas de esa manera, Django se desconecta.
¿Hay alguna manera de hacer lo que intento o debo hacer? Tengo que tener todas mis pruebas en un solo archivo.
Desde la versión 1.6 de Django, el mecanismo de descubrimiento de prueba cambió. Ya no es necesario importar todo desde tests/__init__.py
, pero ahora debe asegurarse de que todos los archivos que contienen pruebas coincidan con la test*.py
patrón test*.py
.
Por lo tanto, en lugar de tener app/tests/models.py
y app/tests/views.py
, ahora debes tener app/tests/test_models.py
y app/tests/test_views.py
.
También puede crear un archivo llamado app/tests/test.py
e incluir sus otros archivos desde allí. Lo que pasa es que el corredor buscará los archivos que coincidan con la test*.py
patrón test*.py
y los ejecutará.
En su __init__.py ponga algo como:
from foo_test import *
from bar_test import *
Solo para agregar a la gran answer ...
También puede usar la opción --pattern
para especificar cómo se nombran sus archivos de prueba.
Por ejemplo, si sus archivos de prueba se llaman foo_test.py
, bar_test.py
y similares, puede usar:
$ ./manage.py test --pattern="*_test.py"
Nota: Esto describe el comportamiento antes de Django 1.6. Vea la respuesta de Artur Soler para Django 1.6 y posterior .
Haz un paquete: myapp/tests/
Dentro del paquete, coloque tantos módulos de prueba diferentes como desee. En el __init__.py
dentro de las tests
, importe las pruebas de esos módulos. (O alguna variación sobre este tema)
editar: Wow, no notó que ya mencionó un paquete de tests
.
Lo importante es tener todo disponible desde el paquete. Django obtendrá las pruebas del paquete, por lo que deben estar visibles en __init__.py
.
[Editar: nota añadida sobre Django versión 1.6]