van.pg

Skjermbilde programvare:
van.pg
Prog.varedetaljer:
Versjon: 2.0
Last opp dato: 14 Apr 15
Utvikler: Brian Sutherland
Lisens: Gratis
Popularitet: 66

Rating: 5.0/5 (Total Votes: 1)

van.pg er en Python-modul som gir enkel etablering av PostgreSQL databaser (og klynger) for enhetstesting.
Dirty Databaser
Test databaser ta lang tid å lage. Generelt må du være litt forsiktig når du velger å slette / gjenskape en testdatabase ligaen.
Det ser også ut til å være noen robust måte i PostgreSQL for å finne ut om en database var forpliktet til eller ikke.
Så van.pg har ikke annet valg enn å plassere ansvaret på deg til å varsle det når en database er skitten. Dersom dette ikke blir gjort riktig, vil test isolasjon bli kompromittert. Det er ikke ideelt, men det beste vi kan gjøre.
Unntaket er hvis du konsekvent bruker transaksjons pakke (http://pypi.python.org/pypi/transaction) for å administrere databasen forplikter. I dette tilfellet kan du be om ressursen for å være skitne når en transaksjon er begått.
Integrasjon med testresources
Den typiske måten å bruke disse inventar er via testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> fra testresources importere ResourcedTestCase
& Nbsp; >>> fra van.pg import DatabaseManager
& Nbsp; >>> import psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... conn = psycopg2.connect (host = db.host, database = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar heltall);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klasse MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... ressurser = [('db ", DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def RunTest (egen-):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, database = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO foo VERDIER (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # MERK: må lukke tilkoblinger eller sletting av databaser svikter
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # vi endret DB, så den trenger ny start
Faktisk kjøre testen:
& Nbsp; >>> fra unittest import TextTestRunner
& Nbsp; >>> import sys
& Nbsp; >>> løper = TextTestRunner (strøm = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + ellipse
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Bruk mal databaser
Hvis du trenger å gjenskape de samme database mange ganger, kan det være raskere å la PostgreSQL kopiere databasen fra en mal database. Du kan gjøre dette ved å ha en DatabaseManager tjene som mal for en annen:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klasse MyTest2 (MyTest):
& Nbsp; ... ressurser = [('db ", DatabaseManager (mal = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + ellipse
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
integrasjon transaksjon
Hvis søkeordet argumen dirty_on_commit er sant, vil en DatabaseManager markere database som tilsmusset etter hver vellykket iverksetting gjort gjennom transaksjonen modulen. Dette betyr at hver test som dirties databasen trenger ikke å varsle den manuelt.
& Nbsp; >>> mann = DatabaseManager (dirty_on_commit = True)
Hvis du bruker denne funksjonen, må du stole på transaksjons (http://pypi.python.org/pypi/transaction) pakke selv.
Ved hjelp av en eksisterende database
Som standard oppretter van.pg en ny PostgreSQL klynge i en midlertidig katalog og lanserer en PostgreSQL daemon. Dette fungerer mesteparten av tiden, men er ikke meget rask.
Hvis du har en allerede kjører PostgreSQL klynge, kan du fortelle van.pg å bruke det ved å sette miljøvariabelen VAN_PG_HOST. For eksempel, for å kjøre van.pg tester mot en lokal PostgreSQL server med det er stikkontakter i / tmp / PGCluster gjøre:
VAN_PG_HOST = / tmp / PGCluster python setup.py test
ADVARSEL: noen databaser starter med test_db i måldatabasen vil trolig bli droppet.
Avslutnings Tilkoblinger
Vær forsiktig å riktig lukke alle tilkoblinger til databasen når testen er ferdig med det. PostgreSQL tillater ikke slippe databaser mens det er åpne tilkoblinger. Dette vil føre til van.pg for feil når du prøver å slippe testdatabase.
auto skape en klynge
På et lavere nivå, kan du også programmatisk manipulere din egen PostgreSQL klynge.
Initialisere Cluster:
& Nbsp; >>> fra van.pg import Cluster
& Nbsp; >>> klynge = Cluster ()
& Nbsp; >>> cluster.initdb ()
Som skaper en database i en midlertidig mappe:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION' i os.listdir (dbdir)
& Nbsp; Sann
Starte det:
& Nbsp; >>> cluster.start ()
Lag / Test en database:
& Nbsp; >>> DBNAME = cluster.createdb ()
Vi kan koble til databasen:
& Nbsp; >>> import psycopg2
& Nbsp; >>> conn = psycopg2.connect (database = DBNAME, vert = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Twiddle databasen for å sørge for at vi kan gjøre det grunnleggende:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VERDIER (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * from x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Stopp klyngen demonen:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Starte det igjen:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (database = DBNAME, vert = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * from x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Og opprydding:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir er None
& Nbsp; Sann
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Utvikling
Utvikling foregår på GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Hva er nytt i denne utgaven:

  • Support Python 3.2.
  • Drop Python 2.5-støtte.
  • Legg tox.ini for testing mot flere python versjoner.
  • Kjør PostgreSQL som en delprosess snarere enn som en daemon (via pg_ctl).
  • Re-organisere koden for å forbedre gjenbruk og testdekning.

Krav :

  • Python

Lignende programvare

nose-bleed
nose-bleed

14 Apr 15

DoctorJ
DoctorJ

11 May 15

lintswitch
lintswitch

15 Apr 15

tcsv2png
tcsv2png

11 May 15

Annen programvare fra utvikleren Brian Sutherland

wesgi
wesgi

11 May 15

Kommentarer til van.pg

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!