van.pg

Sagteware kiekie:
van.pg
Sagteware besonderhede:
Weergawe: 2.0
Upload datum: 14 Apr 15
Ontwikkelaar: Brian Sutherland
Lisensie: Gratis
Populariteit: 5

Rating: nan/5 (Total Votes: 0)

van.pg is 'n Python module wat bied maklike skepping van PostgreSQL databasisse (en trosse) vir eenheid toets.
Dirty Databasisse
Toets databasisse neem 'n lang tyd te skep. In die algemeen moet jy 'n bietjie versigtig te wees wanneer jy besluit om te verwyder / herskep 'n toets databasis wedstryd.
Ook, dit lyk asof daar geen robuuste manier PostgreSQL van die uitzoeken of 'n databasis is verbind tot of nie.
So van.pg het geen keuse nie, maar die verantwoordelikheid op die om jou te plaas om dit te stel as 'n databasis is vuil. As dit nie behoorlik gedoen word, sal toets isolasie prysgegee word nie. Dit is nie ideaal nie, maar die beste wat ons kan doen.
Een uitsondering is wanneer jy konsekwent gebruik die transaksie pakket (http://pypi.python.org/pypi/transaction) te bestuur databasis pleeg. In hierdie geval kan jy vra vir die hulpbron te vuil word wanneer 'n transaksie is verbind.
Integrasie met testresources
Die tipiese manier om hierdie wedstryde te gebruik, is via testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> van testresources invoer ResourcedTestCase
& Nbsp; >>> van van.pg invoer DatabaseManager
& Nbsp; >>> invoer psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... conn = psycopg2.connect (host = db.host, databasis = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE cat (bar heelgetaluitdrukking);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klas MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... hulpbronne = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (self):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, databasis = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("voeg in cat WAARDES (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM cat")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # NOTA: moet konneksies maak of val databasisse versuim
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # Ons verander die DB, so dit moet re-loading
Eintlik loop die toets:
& Nbsp; >>> van unittest invoer TextTestRunner
& Nbsp; >>> invoer sys
& Nbsp; >>> naaswenner = TextTestRunner (stroom = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + beletselteken
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Gebruik sjabloon databasisse
As jy nodig het om dieselfde databasis baie keer te herskep, kan dit vinniger te laat PostgreSQL kopieer die databasis van 'n sjabloon databasis. Jy kan dit doen deur die feit dat een DatabaseManager dien as die sjabloon vir 'n ander:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klas MyTest2 (MyTest):
& Nbsp; ... hulpbronne = [('db', DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + beletselteken
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
transaksie integrasie
As die navraag argumen dirty_on_commit is True, sal 'n DatabaseManager die databasis merk as vuil na elke suksesvolle gemaak pleeg deur die transaksie module. Dit beteken elke toets wat bevuil die databasis nie met die hand te stel nie.
& Nbsp; >>> man = DatabaseManager (dirty_on_commit = True)
As jy hierdie funksie gebruik, moet jy afhanklik van die transaksie (http://pypi.python.org/pypi/transaction) verpak jouself.
Gebruik 'n bestaande databasis
By verstek, van.pg skep 'n nuwe PostgreSQL cluster in 'n tydelike gids en loods 'n PostgreSQL bediener. Dit werk die meeste van die tyd, maar is nie baie vinnig.
As jy 'n reeds aan die gang PostgreSQL cluster, kan jy vertel van.pg om dit te gebruik deur die oprigting van die omgewing veranderlike VAN_PG_HOST. Byvoorbeeld, van.pg se toetse uit te voer teen 'n plaaslike PostgreSQL bediener met sy voetstukke in / tmp / pgcluster doen:
VAN_PG_HOST = / tmp / pgcluster luislang setup.py toets
WAARSKUWING: enige databasisse begin met test_db in die teiken databasis is geneig om te laat val.
verbindings te sluit
Wees versigtig om alle verbindings behoorlik toemaak om die databasis sodra jou toets gedoen met dit. PostgreSQL nie toelaat dat die val databasisse terwyl daar oop verbindings. Dit sal veroorsaak dat van.pg aan fout wanneer ek probeer om die toets databasis te laat val.
programatically skep van 'n cluster
Teen 'n laer vlak, kan jy ook programmaties manipuleer jou eie PostgreSQL cluster.
Inisialiseer die Cluster:
& Nbsp; >>> van van.pg invoer Cluster
& Nbsp; >>> cluster = Cluster ()
& Nbsp; >>> cluster.initdb ()
Wat 'n databasis in 'n tydelike gids:
& Nbsp; >>> invoer os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION' in os.listdir (dbdir)
& Nbsp; True
Begin dit:
& Nbsp; >>> cluster.start ()
Skep / Toets 'n databasis:
& Nbsp; >>> dbname = cluster.createdb ()
Ons kan met die databasis:
& Nbsp; >>> invoer psycopg2
& Nbsp; >>> conn = psycopg2.connect (databasis = dbname, gasheer = cluster.dbdir)
& Nbsp; >>> verskil = conn.cursor ()
Gewriemel die databasis te verseker dat ons die basiese beginsels kan doen maak:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("voeg in x-waardes (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Stop die cluster daemoon:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Begin weer:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (databasis = dbname, gasheer = cluster.dbdir)
& Nbsp; >>> verskil = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
En opruim:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir is Geen
& Nbsp; True
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Vals
Ontwikkeling
Ontwikkeling vind plaas op GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Wat is nuut in hierdie release:

  • Support Python 3.2.
  • Drop Python 2.5 ondersteuning.
  • Voeg tox.ini vir die toets teen verskeie luislang weergawes.
  • Run PostgreSQL as 'n subprocess eerder as 'n bediener (via pg_ctl).
  • Herorganiseer kode hergebruik en toets bedekking te verbeter.

Vereistes :

  • Python

Soortgelyke sagteware

PyHamcrest
PyHamcrest

11 May 15

Pulse
Pulse

20 Feb 15

qc
qc

14 Apr 15

Ander sagteware ontwikkelaar Brian Sutherland

wesgi
wesgi

11 May 15

Kommentaar te van.pg

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!