2012-05-25 10 views
5

Me gustan las pruebas de unidad django, porque crean y sueltan la base de datos de prueba en ejecución.Tornado. Django-like testrunner and test database

¿Qué formas de crear una base de datos de prueba para un tornado existe?

UPD: Estoy interesado en la creación de la base de datos de prueba postgresql en ejecución de prueba.

+0

Como Tornado no lo vincula con una base de datos específica, puede obtener una mejor respuesta a esta pregunta si se refiere a la base de datos específica que está utilizando. Es decir, utilizo un equipo de prueba para mi backend MongoDB, pero es posible que esté utilizando PostgreSQL o MySQL. – ESV

+0

@ESV Problema al burlarse de db aquí, es que no tenemos un esquema de base de datos postgresql descrito para tornado. Por cierto, podemos generar sql a partir de modelos django y usarlo en pruebas. –

Respuesta

5

Encontré que la manera más fácil es simplemente usar un volcado de SQL para la base de datos de prueba. Crea una base de datos, rellena con accesorios y escríbela en un archivo. Simplemente llame al load_fixtures antes de ejecutar sus pruebas (o siempre que desee restablecer el DB). Este método ciertamente puede mejorarse, pero ha sido lo suficientemente bueno para mis necesidades.

import os 
import unittest2 

import tornado.database 

settings = dict(
    db_host="127.0.0.1:3306", 
    db_name="testdb", 
    db_user="testdb", 
    db_password="secret", 
    db_fixtures_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures.sql'), 
) 

def load_fixtures(): 
    """Fixtures are stored in an SQL dump. 
    """ 
    os.system("psql %s --user=%s --password=%s < %s" % (settings['db_name'], 
     settings['db_user'], settings['db_password'], settings['db_fixtures_file'])) 

    return tornado.database.Connection(
     host=settings['db_host'], database=settings['db_name'], 
     user=settings['db_user'], password=settings['db_password']) 
+0

Cavar de esta manera. –