Тестирование базы данных на python, postgresql - PullRequest
6 голосов
/ 27 апреля 2010

Как вы тестируете свой DAL на Python, использующий postgresql?

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

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

Я использую Sqlalchemy в качестве своего ORM.

Ответы [ 4 ]

7 голосов
/ 17 ноября 2015

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 будет ожидать закрытия всех активных соединений.

4 голосов
/ 23 апреля 2015

Вы пробовали testing.postgresql ?

2 голосов
/ 27 апреля 2010

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

0 голосов
/ 25 июня 2016

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

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

pig = quickpiggy.Piggy (volatile = True, create_db = 'somedb')

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

...