van.pg

Software screenshot:
van.pg
Software detaljer:
Version: 2.0
Upload dato: 14 Apr 15
Udvikler: Brian Sutherland
Licens: Gratis
Popularitet: 5

Rating: nan/5 (Total Votes: 0)

van.pg er en Python-modul, der giver nem oprettes PostgreSQL databaser (og klynger) for test af enheder.
Dirty Databaser
Test databaser tage lang tid at skabe. Generelt skal du være lidt forsigtig, når du beslutter dig for at slette / genskabe et armatur test database.
Synes også der at være nogen robust måde PostgreSQL for at finde ud af, om en database er begået til eller ej.
Så van.pg har intet andet valg end at placere ansvaret på dig til at anmelde det, når en database er snavset. Hvis dette ikke er gjort ordentligt, vil test isolation blive kompromitteret. Det er ikke ideelt, men det bedste, vi kan gøre.
En undtagelse er, hvis du konsekvent bruger transaktionen pakken (http://pypi.python.org/pypi/transaction) til at administrere databasen begår. I dette tilfælde kan du bede om ressourcen skal snavset, når en transaktion begået.
Integration med testresources
Den typiske måde at bruge disse armaturer er via testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> fra testresources importerer 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 heltal);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klasse MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... ressourcer = [(»DB«, DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (selv-):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, database = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO Foo VALUES (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # BEMÆRK: skal lukke forbindelser eller droppe databaser mislykkes
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # vi ændret BF så det skal genpålæsningen
Faktisk køre testen:
& Nbsp; >>> fra unittest import TextTestRunner
& Nbsp; >>> import- sys
& Nbsp; >>> runner = TextTestRunner (strøm = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + ellipse
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Brug skabelon databaser
Hvis du har brug for at genskabe den samme database mange gange, kan det være hurtigere at lade PostgreSQL kopiere databasen fra en skabelon database. Du kan gøre dette ved at have en DatabaseManager tjene som skabelon for en anden:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klasse MyTest2 (MyTest):
& Nbsp; ... ressourcer = [(»DB«, DatabaseManager (skabelon = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + ellipse
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
transaktion integration
Hvis søgeordet argumen dirty_on_commit er True, vil en DatabaseManager angive, at databasen snavset efter hver succesfuld commit foretaget gennem transaktionen modulet. Det betyder hver test som ã|ndrer databasen ikke manuelt anmelde det.
& Nbsp; >>> mand = DatabaseManager (dirty_on_commit = True)
Hvis du bruger denne funktion, skal du stole på transaktionen (http://pypi.python.org/pypi/transaction) pakke dig selv.
Brug en eksisterende database
Som standard van.pg skaber en ny PostgreSQL klynge i en midlertidig mappe og lancerer en PostgreSQL-dæmonen. Dette virker det meste af tiden, men er ikke meget hurtigt.
Hvis du har en allerede kører PostgreSQL klynge, kan du fortælle van.pg at bruge det ved at indstille miljøvariablen VAN_PG_HOST. For eksempel at køre van.pg tests mod en lokal PostgreSQL server med det stikkontakter i / tmp / pgcluster gøre:
VAN_PG_HOST = / tmp / pgcluster python setup.py test
ADVARSEL: alle databaser der starter med test_db i måldatabasen sandsynligvis vil blive droppet.
Lukning Connections
Vær omhyggelig med at korrekt lukke alle forbindelser til databasen, når din test er færdig med det. PostgreSQL tillader ikke droppe databaser, mens der er åbne forbindelser. Dette vil medføre van.pg fejl, når de forsøger at droppe testen databasen.
programmeringsmæssigt at skabe en klynge
På et lavere niveau, kan du også programmeringsmæssigt manipulere din egen PostgreSQL klynge.
Initialiser Cluster:
& Nbsp; >>> fra van.pg import Cluster
& Nbsp; >>> klynge = Cluster ()
& Nbsp; >>> cluster.initdb ()
Som skaber en database i en midlertidig mappe:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION «i os.listdir (dbdir)
& Nbsp; Sand
Start det:
& Nbsp; >>> cluster.start ()
Opret / Test en database:
& Nbsp; >>> dbname = cluster.createdb ()
Vi kan oprette forbindelse til databasen:
& Nbsp; >>> import psycopg2
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Twiddle databasen for at sikre, at vi kan gøre det grundlæggende:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x-værdier (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * fra x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Stop klyngen dæmonen:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Start det igen:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * fra x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Og oprydning:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir er None
& Nbsp; Sand
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Udvikling
Udvikling foregår på GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Hvad er nyt i denne udgivelse:

  • Support Python 3.2.
  • Drop Python 2.5 support.
  • Tilføj tox.ini til test mod flere python versioner.
  • Kør PostgreSQL som en underordnet snarere end som en dæmon (via pg_ctl).
  • omorganisere kode for at forbedre genbrug og test dækning.

Krav :

  • Python

Lignende software

Clamity
Clamity

12 May 15

cov-core
cov-core

20 Feb 15

nose-sfd
nose-sfd

14 Apr 15

Speccer
Speccer

14 Apr 15

Andre software developer Brian Sutherland

wesgi
wesgi

11 May 15

Kommentarer til van.pg

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!