5

Как вы можете протестировать свой DAL Python, который использует postgresql.Тестирование базы данных в python, postgresql

В sqlite вы можете создать базу данных в памяти для каждого теста, но это невозможно сделать для postgresql.

Мне нужна библиотека, которая может быть использована для настройки базы данных и очистки ее после завершения теста.

Я использую Sqlalchemy как свой ORM.

ответ

2

Вы можете использовать nose, чтобы написать свои тесты, а затем просто используйте SQLAlchemy для создания и очистки тестовой базы данных в ваших методах setup/teardown.

+0

@ Luper Rouch: Как очистить, чтобы база данных находилась в том же состоянии после завершения теста. Я не думаю, что запуск/откат транзакции является решением. – StackUnderflow

+0

Вы можете начать с удаления всей базы данных в режиме срыва. –

+0

Итак, мне нужно было бы создать новый экземпляр базы данных для каждого теста .. не так ли сделать тесты очень медленными? .. Я просто хочу очистить все данные в базе данных ... Думаю, я могу написать SQL, чтобы очистить все таблицы данных в разрыве .. Хотя я искал что-то вроде SQLUnit – StackUnderflow

3

pg_tmp(1) - это утилита, предназначенная для упрощения этой задачи. Вот как вы можете начать новое соединение с SQLAlchemy:

from subprocess import check_output 
from sqlalchemy import create_engine 

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

Это закрутить новую базу данных, которая автоматически уничтожается в течение 60 секунд. Если соединение открыто, pg_tmp будет ждать, пока все активные соединения не будут закрыты.

0

Также есть QuickPiggy, который способен очищать после себя. Из документов:

импровизированный экземпляр PostgresSQL можно получить довольно легко:

свинья = quickpiggy.Piggy (летучий = True, create_db = 'somedb')

соппы = psycopg2.connect (pig.dsnstring())

Смежные вопросы