5

¿Cómo se prueba unitariamente el DAL de python que está utilizando postgresql.Prueba de base de datos en python, postgresql

En sqlite puede crear una base de datos en memoria para cada prueba, pero esto no se puede hacer para postgresql.

Quiero una biblioteca que podría usarse para configurar una base de datos y limpiarla una vez que se realiza la prueba.

Estoy usando Sqlalchemy como mi ORM.

Respuesta

2

Puede usar nose para escribir sus pruebas, luego simplemente use SQLAlchemy para crear y limpiar la base de datos de prueba en sus métodos setup/teardown.

+0

@Luper Rouch: cómo debo limpiar para que la base de datos esté en el mismo estado una vez que finalice la prueba. No creo que iniciar/deshacer una transacción sea la solución. – StackUnderflow

+0

Puede comenzar dejando caer toda la base de datos en el desmontaje. –

+0

Así que tendría que crear una nueva instancia de base de datos para cada prueba ... ¿no harían las pruebas muy lentas? ... Querría limpiar todos los datos de la base de datos ... Creo que puedo escribir SQL para limpiar todo datos de la tabla en desmontaje ... Aunque estaba buscando algo como SQLUnit – StackUnderflow

3

pg_tmp(1) es una utilidad destinada a facilitar esta tarea. He aquí cómo usted puede comenzar una nueva conexión con SQLAlchemy:

from subprocess import check_output 
from sqlalchemy import create_engine 

url = check_output(['pg_tmp', '-t']) 
engine = create_engine(url) 

Esto hará girar una nueva base de datos que se destruye automáticamente en 60 segundos. Si hay una conexión abierta, pg_tmp esperará hasta que se cierren todas las conexiones activas.

0

También hay QuickPiggy, que es capaz de limpiar por sí mismo. A partir de los documentos:

Un ejemplo PostgresSQL improvisada puede obtenerse muy fácilmente:

cerdo = quickpiggy.Piggy (volátil = True, CREATE_DB = 'somedb')

conn = psycopg2.connect (pig.dsnstring())

Cuestiones relacionadas