van.pg

Programinė įranga Screenshot:
van.pg
Programinė detalės:
Versija: 2.0
Įkėlimo datą: 14 Apr 15
Kūrėjas: Brian Sutherland
Licencija: Nemokamai
Populiarumas: 5

Rating: nan/5 (Total Votes: 0)

van.pg yra Python modulis, kuris suteikia lengvą kūrimą PostgreSQL duomenų bazių (ir klasterių) vieneto bandymai.
Dirty bazės
Bandymo duomenų bazės užtrukti ilgą laiko sukurti. Apskritai, jūs turite būti šiek tiek atsargūs, kai jūs nuspręsite ištrinti / atkurti bandymo duomenų bazės detalę.
Be to, atrodo, kad nėra patikimas būdas PostgreSQL ir suprasti, jei duomenų bazė buvo įsipareigojusi, ar ne.
Taigi van.pg neturi pasirinkimo, bet padėkite ant jūsų atsakomybė pranešti, kai duomenų bazė yra nešvarus. Jei tai nebus padaryta teisingai, bandymo izoliacija bus pažeista. Tai nėra ideali, tačiau geriausia, ką galite padaryti.
Viena išimtis yra, jei jūs nuolat naudoti sandorių paketą (http://pypi.python.org/pypi/transaction) valdyti duomenų bazė įsipareigoja. Tokiu atveju galite prašyti ištekliaus būti dirtied kai sandoris yra įsipareigojusi.
Integracija su testresources
Tipiškas būdas naudoti šiuos armatūra yra per testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> iš testresources importuoti ResourcedTestCase
& Nbsp; >>> iš van.pg importo DatabaseManager
& Nbsp; >>> import psycopg2
& Nbsp; >>> def init_db (dB):
& Nbsp; ... Conn = psycopg2.connect (priimančioji = db.host, duomenų bazių = db.database)
& Nbsp; ... dab = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar skaičiaus);)
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klasės MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... ištekliai = [("db", DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... Def runTest (si):
& Nbsp; ... Conn = psycopg2.connect (priimančioji = self.db.host, duomenų bazių = self.db.database)
& Nbsp; ... dab = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO Foo vertės (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... dab = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # PASTABA: reikia uždaryti jungtis ar nuleisti duomenų bazes nepavyksta
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # mes pakeitėme DB, todėl reikia iš naujo pakrauti
Tiesą sakant paleisti testą:
& Nbsp; >>> iš unittest importo TextTestRunner
& Nbsp; >>> import sys
& Nbsp; >>> bėgikas = TextTestRunner (srautas = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest + daugtaškis
& Nbsp ;.
& Nbsp; ...
& Nbsp; Gerai
& Nbsp; ...
Naudojant šabloną duomenų bazės "
Jei jums reikia naujo ta pačia duomenų baze daug kartų, tai gali būti greičiau tegul PostgreSQL nukopijuoti duomenų bazę iš šablonų duomenų bazės. Jūs galite tai padaryti, turintys vieną DatabaseManager tarnauja kaip kitą šabloną:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klasės MyTest2 (MyTest):
& Nbsp; ... ištekliai = [("db", DatabaseManager (šablonas = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest + daugtaškis
& Nbsp ;.
& Nbsp; ...
& Nbsp; Gerai
& Nbsp; ...
sandoris integracija
Jei argumen dirty_on_commit raktinis žodis yra tiesa, DatabaseManager pažymės duomenų bazę dirtied po kiekvieno sėkmingo įsipareigoja atlikti per sandorio modulį. Tai reiškia, kad kiekvieną bandymą, kuris dirties duomenų bazę neturi rankiniu būdu praneša apie jį.
& Nbsp; >>> vyras = DatabaseManager (dirty_on_commit = True)
Jei naudojate šią funkciją, turite priklausys nuo sandorio (http://pypi.python.org/pypi/transaction) Pakuotės sau.
Naudojant esamą duomenų bazę "
Pagal nutylėjimą, van.pg sukuria naują PostgreSQL klasteris laikiną katalogą ir pradeda PostgreSQL demonas. Tai veikia didžiąją dalį laiko, bet nėra labai greitai.
Jei turite jau veikia PostgreSQL klasteris, galite pasakyti van.pg ją naudoti nustatant aplinkos kintamąjį VAN_PG_HOST. Pavyzdžiui, jei norite paleisti van.pg testų prieš vietos PostgreSQL serveris su jos lizdus į / tmp / pgcluster daryti:
VAN_PG_HOST = / tmp / pgcluster python setup.py testas
ĮSPĖJIMAS: kad visi duomenų bazės pradedant test_db tikslinės duomenų bazėje gali būti atsisakyta.
Uždarymo Ryšiai
Būkite atsargūs, kad tinkamai uždaryti visas jungtis prie duomenų bazės, kai jūsų bandymas padaryti su juo. PostgreSQL neleidžia nuleisti duomenų bazes, o ten yra atviros jungtys. Tai sukels van.pg klaidos bandant atsisakyti bandymo duomenų bazę.
programatically kurti klasterius
Žemesniu lygmeniu, taip pat galite programiškai manipuliuoti savo PostgreSQL klasterius.
Inicijuoti Cluster:
& Nbsp; >>> iš van.pg importo klasterio
& Nbsp; >>> klasteris = Cluster ()
& Nbsp; >>> cluster.initdb ()
Kuris sukuria duomenų bazę, į laikiną katalogą:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> "PG_VERSION" į os.listdir (dbdir)
& Nbsp; Tiesa
Pradėkite ją:
& Nbsp; >>> cluster.start ()
Sukurti / Pasitikrink duomenų bazę:
& Nbsp; >>> dbname = cluster.createdb ()
Mes galime prisijungti prie duomenų bazės:
& Nbsp; >>> import psycopg2
& Nbsp; >>> Conn = psycopg2.connect (duomenų bazės = dbname, priimančiosios = cluster.dbdir)
& Nbsp; >>> dab = conn.cursor ()
Sukinėjimas duomenų bazę įsitikinti, kad mes galime padaryti pagrindai:
& Nbsp; >>> cur.execute ("CREATE TABLE x (Y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x reikšmės (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Sustabdykite grupių demonas:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Pradėti iš naujo:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> Conn = psycopg2.connect (duomenų bazės = dbname, priimančiosios = cluster.dbdir)
& Nbsp; >>> dab = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Ir valymas:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir yra Nėra
& Nbsp; Tiesa
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Neteisingų
kūrimas
Vystymosi vyksta GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Kas naujo , šioje laidoje:

  • Pagalba Python 3.2.
  • lašas Python 2.5 palaikymas.
  • Pridėti tox.ini testavimo prieš keletą python versijomis.
  • Vykdyti PostgreSQL kaip subproceso o ne kaip demonas (per pg_ctl).
  • Re organizuoti kodą pagerinti jos pakartotinį naudojimą ir bandymo aprėptį.

Reikalavimai :

  • Python

Panaši programinė įranga

SLAMD
SLAMD

3 Jun 15

BuildBot
BuildBot

17 Feb 15

assertEquals
assertEquals

20 Feb 15

nose-skipreq
nose-skipreq

12 May 15

Kita programinė įranga kūrėjas Brian Sutherland

wesgi
wesgi

11 May 15

Komentarai van.pg

Komentarai nerastas
Pridėti komentarą
Pasukite ant paveikslėlio!