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) для управління базою даних здійснює. У цьому випадку ви можете звернутися за ресурс, який можна загадили, коли угода відбувається.
Інтеграція з testresources
Типовий спосіб використання цих світильників за допомогою testresources (http://pypi.python.org/pypi/testresources/):
І NBSP; >>> від testresources імпортувати ResourcedTestCase
І NBSP; >>> від van.pg імпорту DatabaseManager
І NBSP; >>> імпорту psycopg2
І NBSP; >>> Def init_db (дБ):
І NBSP; ... Коннектикут = psycopg2.connect (хост = db.host, бази даних = db.database)
І NBSP; ... пес = conn.cursor ()
І NBSP; ... cur.execute ("CREATE TABLE Foo (бар Integer);")
І 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 Foo VALUES (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; >>> від UnitTest імпорту TextTestRunner
І NBSP; >>> імпортні SYS
І NBSP; >>> бігун = TextTestRunner (потік = sys.stdout)
І NBSP; >>> runner.run (MyTest ()) # doctest: + Многоточие
І NBSP;.
І NBSP; ...
І NBSP; OK
І 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; OK
І 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 (база даних = імя_бд, Host = 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 (база даних = імя_бд, Host = 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

Схожі програми

databene benerator
databene benerator

14 Apr 15

KaliVeda
KaliVeda

20 Feb 15

jstestnetlib
jstestnetlib

20 Feb 15

nose-kleenex
nose-kleenex

15 Apr 15

Інші програми розробника Brian Sutherland

wesgi
wesgi

11 May 15

van.pg

Коментар не знайдено
додати коментар
Включіть картинки!