van.pg

Скриншот программы:
van.pg
Детали программы:
Версия: 2.0
Дата загрузки: 14 Apr 15
Разработчик: Brian Sutherland
Тип распространения: Бесплатная
Популярность: 5

Rating: nan/5 (Total Votes: 0)

van.pg модуль Python, который обеспечивает легкое создание баз данных PostgreSQL в (и кластеров) для модульного тестирования.
Грязные Базы данных
Тестовые базы данных занимает много времени, чтобы создать. В общем, вы должны быть немного осторожным, когда вы решите удалить / восстановить приспособление тест базы данных.
Кроме того, там, кажется, нет никакого надежный способ в PostgreSQL из выясняя, если база данных было совершено или нет.
Так van.pg не имеет выбора, кроме как возложить ответственность на вас уведомить, когда база данных грязный. Если это не сделано должным образом, изоляция тест будет нарушена. Это не идеально, но лучшее, что можно сделать.
Одно исключение, если вы постоянно используете пакет транзакций (http://pypi.python.org/pypi/transaction~~HEAD=dobj) для управления базой данных совершает. В этом случае вы можете задать для ресурса, быть испачканы всякий раз, когда сделка совершается.
Интеграция с testresources
Типичный способ использования этих приборов осуществляется через testresources (http://pypi.python.org/pypi/testresources/):
& NBSP; >>> от импорта ResourcedTestCase testresources
& NBSP; >>> от импорта DatabaseManager van.pg
& NBSP; >>> импорта psycopg2
& NBSP; >>> Def init_db (дБ):
& NBSP; ... Коннектикут = psycopg2.connect (хост = db.host, базы данных = db.database)
& NBSP; ... пес = conn.cursor ()
& NBSP; ... cur.execute ("CREATE TABLE Foo (бар целое число);")
& NBSP; ... conn.commit ()
& NBSP; ... conn.Close ()
& NBSP; >>> класс MyTest (ResourcedTestCase):
& NBSP; ...
& NBSP; ... ресурсы = [('дБ', DatabaseManager (initialize_sql = init_db))]
& NBSP; ...
& NBSP; ... Def RunTest (само):
& NBSP; ... Коннектикут = psycopg2.connect (хост = self.db.host, базы данных = self.db.database)
& NBSP; ... пес = conn.cursor ()
& NBSP; ... cur.execute ("INSERT INTO VALUES Foo (1);")
& NBSP; ... conn.commit ()
& NBSP; ... пес = conn.cursor ()
& NBSP; ... cur.execute ("SELECT * FROM Фу")
& NBSP; ... self.assertEquals (cur.fetchall (), [(1,)])
& NBSP; ... # ПРИМЕЧАНИЕ: необходимо закрыть соединений или базы данных не может падать
& NBSP; ... conn.Close ()
& NBSP; ... self.db.dirtied () # мы изменили базу данных, поэтому она нуждается в повторной загрузки
На самом деле запустить тест:
& NBSP; >>> от импорта TextTestRunner UnitTest
& NBSP; >>> импортные SYS
& NBSP; >>> бегун = TextTestRunner (поток = sys.stdout)
& NBSP; >>> runner.run (MyTest ()) # doctest + Многоточие
& NBSP ;.
& NBSP; ...
& NBSP; ОК
& NBSP; ...
Базы данных Использование шаблонов
Если вам нужно, чтобы воссоздать ту же базу данных много раз, это может быть быстрее, чтобы PostgreSQL скопировать базу данных из базы данных шаблонов. Вы можете сделать это, имея одно DatabaseManager служить в качестве шаблона для другого:
& NBSP; >>> template_db = DatabaseManager (initialize_sql = init_db)
& NBSP; >>> класс MyTest2 (MyTest):
& NBSP; ... ресурсы = [('дБ', DatabaseManager (шаблон = template_db))]
& NBSP; >>> runner.run (MyTest2 ()) # doctest + Многоточие
& NBSP ;.
& NBSP; ...
& NBSP; ОК
& NBSP; ...
Интеграция сделка
Если ключевое слово argumen dirty_on_commit является Правда, DatabaseManager будет отмечать базы данных, как загадили после каждого успеху фиксации осуществляется через модуль транзакций. Это означает, что каждый тест, который пачкает базы данных не придется вручную уведомить его.
& NBSP; >>> человек = DatabaseManager (dirty_on_commit = True)
Если вы используете эту функцию, необходимо зависеть от сделки (http://pypi.python.org/pypi/transaction) Пакет себя.
Использование существующей базы данных
По умолчанию, van.pg создает новый кластер PostgreSQL в временный каталог и запускает демон PostgreSQL. Это работает большую часть времени, но не очень быстро.
Если у вас есть уже работает PostgreSQL кластера, можно сказать, van.pg использовать его, установив переменную окружения VAN_PG_HOST. Например, чтобы запустить тесты van.pg против локального сервера PostgreSQL с его гнезда в / TMP / pgcluster сделать:
VAN_PG_HOST = / TMP / pgcluster питон setup.py тест
ВНИМАНИЕ: любые базы данных, начиная с test_db в целевой базе данных, вероятно, будут сняты.
Закрытие соединения
Будьте осторожны, чтобы должным образом закрыть все подключения к базе данных, как только ваш тест сделать с ней. PostgreSQL не позволяет удаление баз данных, а есть открытые соединения. Это вызовет van.pg к ошибке, когда пытаетесь сбросить тестовую базу данных.
Программно создания кластера
На более низком уровне, вы можете также программно управлять свой собственный PostgreSQL кластера.
Инициализация кластера:
& NBSP; >>> от импорта van.pg кластера
& NBSP; >>> кластера = кластера ()
& NBSP; >>> cluster.initdb ()
Которая создает базу данных в временную папку:
& NBSP; >>> импорта OS
& NBSP; >>> DBDIR = cluster.dbdir
& NBSP; '>>> PG_VERSION »в os.listdir (DBDIR)
& NBSP; Правда
Начни это:
& NBSP; >>> cluster.start ()
Создать / Проверить базу данных:
& NBSP; >>> имя_бд = cluster.createdb ()
Мы можем подключиться к базе данных:
& NBSP; >>> импорта psycopg2
& NBSP; >>> подключений = psycopg2.connect (база данных = имя_бд, хозяин = cluster.dbdir)
& NBSP; >>> тек = conn.cursor ()
Twiddle базу данных, чтобы убедиться, что мы можем сделать основы:
& NBSP; >>> cur.execute ("CREATE TABLE х (у Int)")
& NBSP; >>> cur.execute ("INSERT INTO значений х (1)")
& NBSP; >>> conn.commit ()
& NBSP; >>> cur.execute ("SELECT * FROM х")
& NBSP; >>> cur.fetchall () [0] [0]
& NBSP; 1
Остановите демон кластера:
& NBSP; >>> conn.Close ()
& NBSP; >>> cluster.stop ()
Запустите его снова:
& NBSP; >>> cluster.start ()
& NBSP; >>> подключений = psycopg2.connect (база данных = имя_бд, хозяин = cluster.dbdir)
& NBSP; >>> тек = conn.cursor ()
& NBSP; >>> cur.execute ("SELECT * FROM х")
& NBSP; >>> cur.fetchall () [0] [0]
& NBSP; 1
И очистка:
& NBSP; >>> conn.Close ()
& NBSP; >>> cluster.cleanup ()
& NBSP; >>> cluster.dbdir не Ни
& NBSP; Правда
& NBSP; >>> os.path.exists (DBDIR)
& NBSP; Ложные
Разработка
Развитие происходит на GitHub:
& NBSP; HTTP: //github.com/jinty/van.pg

Что нового В этом выпуске:

  • Поддержка Python 3.2.
  • Поддержка падения Python 2.5.
  • Добавить tox.ini для тестирования против нескольких версий Python.
  • Выполнить PostgreSQL как подпроцесс, а не как демон (через pg_ctl).
  • Реорганизовать код, чтобы улучшить повторное использование и тестовое покрытие.

Требования

  • Python

Похожие программы

tempdir
tempdir

11 May 15

pyVows
pyVows

20 Feb 15

Bisect
Bisect

20 Feb 15

pytest-quickcheck
pytest-quickcheck

14 Apr 15

Другие программы разработчика Brian Sutherland

wesgi
wesgi

11 May 15

Комментарии к van.pg

Комментарии не найдены
добавить комментарий
Включите картинки!