Me gustaría tener un módulo de Python que contenga algunas pruebas de unidad que puedo pasar al hg bisect --command
.Cómo configurar y desmontar temporalmente django db para pruebas unitarias?
Las pruebas unitarias están probando algunas funciones de una aplicación de Django, pero no creo que pueda usar hg bisect --command manage.py test mytestapp
porque mytestapp
tendría que estar habilitadas en settings.py, y las ediciones en settings.py serían Demolí cuando hg bisect
actualiza el directorio de trabajo.
Por lo tanto, me gustaría saber si algo como lo siguiente es el mejor camino a seguir:
import functools, os, sys, unittest
sys.path.append(path_to_myproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
def with_test_db(func):
"""Decorator to setup and teardown test db."""
@functools.wraps
def wrapper(*args, **kwargs):
try:
# Set up temporary django db
func(*args, **kwargs)
finally:
# Tear down temporary django db
class TestCase(unittest.TestCase):
@with_test_db
def test(self):
# Do some tests using the temporary django db
self.fail('Mark this revision as bad.')
if '__main__' == __name__:
unittest.main()
que debería estar más agradecido si pudiera aconsejar bien:
- Si hay de una manera más simple, tal vez subclasificando
django.test.TestCase
pero no editando settings.py o, si no; - ¿Cuáles deberían ser las líneas anteriores que dicen "Configurar django db temporal" y "Desmontar django db temporal"?
+1 para publicar la solución final. –
Gracias. Espero que esto muestre a otros cómo configurar la base de datos de prueba de django para cualquier prueba unitaria arbitraria, incluidas las pruebas de nariz. – blokeley