van.pg

Screenshot Software:
van.pg
Detalii soft:
Versiune: 2.0
Incarca data: 14 Apr 15
Producător: Brian Sutherland
Licenţă: Gratuit
Popularitate: 66

Rating: 5.0/5 (Total Votes: 1)

van.pg este un modul Python care asigură crearea de baze de date PostgreSQL ușor (și clustere) pentru unitate de testare.
murdare Baze de date
Baze de date de testare ia o lungă perioadă de timp pentru a crea. În general, aveți nevoie pentru a fi un pic atenți atunci când vă decideți să ștergeți / recrea un dispozitiv de bază de date de test.
De asemenea, nu pare să existe nici un fel de robust în PostgreSQL de imaginind dacă o bază de date a fost săvârșită sau nu.
Deci, van.pg nu are de ales decât să plaseze responsabilitatea pe tine să-l notifice atunci când o bază de date este murdar. Dacă acest lucru nu se face în mod corespunzător, izolare test va fi compromisă. Nu e ideal, dar tot ce putem face.
O excepție este dacă utilizați în mod constant pachetul de tranzacție (http://pypi.python.org/pypi/transaction) pentru a gestiona baza de date comite. În acest caz, puteți solicita resursa să fie murdărit ori de câte ori o tranzacție este comisă.
Integrare cu testresources
Tipic mod de a utiliza aceste corpuri se face prin testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> din testresources import ResourcedTestCase
& Nbsp; >>> din van.pg DatabaseManager import
& Nbsp; >>> psycopg2 import
& Nbsp; >>> def init_db (db):
& Nbsp; ... Conn = psycopg2.connect (gazdă = db.host, baze de date = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar INTEGER);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> clasă mytest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... resurse = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (auto):
& Nbsp; ... Conn = psycopg2.connect (gazdă = self.db.host, baze de date = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO VALUES foo (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # NOTĂ: trebuie să închidă conexiunile sau in scadere baze de date nu
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # am schimbat PB, deci are nevoie de re-încărcare
Rulați fapt, testul:
& Nbsp; >>> din unittest TextTestRunner import
& Nbsp; >>> SYS import
& Nbsp; >>> runner = TextTestRunner (curent = sys.stdout)
& Nbsp; >>> runner.run (mytest ()) # doctest: + elipsă
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Baze de date Utilizarea template
Dacă aveți nevoie pentru a recrea multe ori aceeași bază de date, aceasta poate fi mai rapid pentru a permite PostgreSQL copia date dintr-o bază de date șablon. Puteți face acest lucru prin care au o DatabaseManager servi drept model pentru un alt:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> clasă MyTest2 (mytest):
& Nbsp; ... resurse = [('db', DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + elipsă
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Integrarea tranzacție
În cazul în care cuvântul cheie argumen dirty_on_commit este adevărat, un DatabaseManager va marca în baza de date ca murdărit după fiecare reușită Comiterea făcut prin intermediul modulului de tranzacție. Acest lucru înseamnă că fiecare încercare pe care namol baza de date nu trebuie să-l notifice manual.
& Nbsp; >>> om = DatabaseManager (dirty_on_commit = True)
Dacă utilizați această funcție, trebuie să depindă de tranzacție (http://pypi.python.org/pypi/transaction) pachet tine.
Utilizarea unei baze de date existent
În mod implicit, van.pg creează un nou grup PostgreSQL într-un director temporar și lansează un demon PostgreSQL. Aceasta funcționează cele mai multe ori, dar nu este foarte rapid.
Dacă aveți un grup PostgreSQL deja în funcțiune, vă pot spune van.pg să-l utilizați prin stabilirea de mediu variabila VAN_PG_HOST. De exemplu, pentru a rula teste van.pg împotriva un server PostgreSQL local, cu e prize în / tmp / pgcluster face:
VAN_PG_HOST = / tmp / pgcluster python încercare setup.py
AVERTISMENT: orice baze de date începând cu test_db în baza de date țintă sunt susceptibile de a fi abandonat.
Conexiuni Inchidere
Fii atent pentru a închide în mod corespunzător toate conexiunile la baza de date odată test se face cu ea. PostgreSQL nu permite scadere baze de date în timp ce există conexiuni deschise. Acest lucru va duce la van.pg eroare când încercați să renunțe la baza de date de test.
a crea programatic un cluster
La un nivel inferior, puteți, de asemenea manipula programatic propriul grup PostgreSQL.
Inițializarea Cluster:
& Nbsp; >>> din van.pg Cluster import
& Nbsp; >>> grup = Cluster ()
& Nbsp; >>> cluster.initdb ()
Care creează o bază de date într-un director temporar:
& Nbsp; >>> os import
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> "pg_version" în os.listdir (dbdir)
& Nbsp; Adevărat
Start aceasta:
& Nbsp; >>> cluster.start ()
Crearea / Testați o bază de date:
& Nbsp; >>> dbname = cluster.createdb ()
Putem conecta la baza de date:
& Nbsp; >>> psycopg2 import
& Nbsp; >>> Conn = psycopg2.connect (baza de date = dbname, gazda = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Twiddle baza de date a ne asigura că putem face elementele de bază:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VALORI (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * de la x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Opriți demonul de cluster:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Start din nou:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> Conn = psycopg2.connect (baza de date = dbname, gazda = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * de la x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Și aleatorie:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir este Niciunul
& Nbsp; Adevărat
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Fals
Dezvoltare
Dezvoltarea are loc pe GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Ce este nou în această versiune:

  • Suport Python 3.2.
  • Arunca Python 2.5 de sprijin.
  • Adauga tox.ini pentru testarea împotriva mai multe versiuni Python.
  • Run PostgreSQL ca un subproces, mai degrabă decât ca un demon (prin pg_ctl).
  • Re-organiza cod pentru a îmbunătăți reutilizarea și acoperire test.

Cerințe :

  • Python

Software similare

nose-coolstorybro
nose-coolstorybro

11 May 15

filterunit
filterunit

11 May 15

codemetre
codemetre

11 May 15

python-noseenv
python-noseenv

20 Feb 15

Alte software-uri de dezvoltator Brian Sutherland

wesgi
wesgi

11 May 15

Comentarii la van.pg

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!