van.pg

Screenshot Software:
van.pg
Mga detalye ng Software:
Bersyon: 2.0
I-upload ang petsa: 14 Apr 15
Nag-develop: Brian Sutherland
Lisensya: Libre
Katanyagan: 5

Rating: nan/5 (Total Votes: 0)

van.pg ay isang Python module na nagbibigay ng madaling paglikha ng mga database PostgreSQL (at mga kumpol ng) para sa pagsubok ng unit.
marumi Database
Mga database ng Test magtagal likhain. Sa pangkalahatan kailangan mong maging isang maliit na maingat kapag nagpasya kang tanggalin / muling likhain ang isang database ng pagsubok kabit.
Gayundin, mukhang walang matatag na paraan sa PostgreSQL ng pag-uunawa kung ang isang database ay nakatuon sa o hindi.
Kaya may van.pg walang pagpipilian ngunit upang ilagay ang pananagutan sa iyo upang i-notify kapag ang isang database ay marumi. Kung ito ay hindi tapos na maayos, pagsubok paghihiwalay ay nakompromiso. Ito ay hindi perpekto, ngunit ang pinakamahusay na maaari naming gawin.
Isang pagbubukod ay kung tuloy-tuloy gamitin ang package transaksyon (http://pypi.python.org/pypi/transaction) upang pamahalaan ang gumawa ng database. Sa kasong ito maaari mong hilingin para sa mapagkukunan na dirtied tuwing may transaksyon ay nakatuon.
Pagsasama sa testresources
Ang tipikal na paraan upang magamit ang mga fixtures ay sa pamamagitan ng testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> mula testresources-import ResourcedTestCase
& Nbsp; >>> mula van.pg import DatabaseManager
& Nbsp; >>> import psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... conn = psycopg2.connect (host = db.host, database = db.database)
& Nbsp; ... kuprum = conn.cursor ()
& Nbsp; ... cur.execute ("LILIKHA TALAAN foo (bar integer);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klase MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... mga mapagkukunan = [('db', DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (sa sarili):
& Nbsp; ... conn = psycopg2.connect (host = self.db.host, database = self.db.database)
& Nbsp; ... kuprum = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT SA foo halaga (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... kuprum = conn.cursor ()
& Nbsp; ... cur.execute ("Piliin * MULA foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # TANDAAN: Dapat isara ang koneksyon o drop sa mga database nabigo
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # Binago namin ang DB, kaya kailangan nito muling pag-load
Sa totoo lang magpatakbo ng pagsusuri:
& Nbsp; >>> mula unittest TextTestRunner pag-import
& Nbsp; >>> import sys
& Nbsp; >>> runner = TextTestRunner (stream = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + elipsis
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Mga database ng Ang paggamit ng template
Kung kailangan mong muling likhain ang parehong database maraming beses, maaari itong maging mas mabilis upang ipaalam PostgreSQL kopyahin ang database mula sa isang database template. Magagawa mo ito sa pamamagitan ng pagkakaroon ng isang DatabaseManager magsilbing template para sa isa pang:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klase MyTest2 (MyTest):
& Nbsp; ... mga mapagkukunan = [('db', DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + elipsis
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Pagsasama ng transaksyon
Kung ang keyword argumen dirty_on_commit ay Totoo, markahan ang isang DatabaseManager ay ang database bilang dirtied pagkatapos ng bawat successfull gumawa ginawa sa pamamagitan ng module na transaksyon. Nangangahulugan ito na ang bawat pagsubok na dirties ang database ay hindi kailangang manu-mano-notify ito.
& Nbsp; >>> tao = DatabaseManager (dirty_on_commit = True)
Kung gagamitin mo ang tampok na ito, kailangan mong nakasalalay sa mga transaksyon (http://pypi.python.org/pypi/transaction)-package ang iyong sarili.
Ang paggamit ng isang umiiral na database
Sa pamamagitan ng default, van.pg ay lumilikha ng isang bagong kumpol PostgreSQL sa isang pansamantalang direktoryo at naglulunsad ng PostgreSQL diyablo. Ito ay gumagana sa karamihan ng mga oras, ngunit ito ay hindi masyadong mabilis.
Kung mayroon kang nagpapatakbo na PostgreSQL kumpol, maaari mong sabihin sa van.pg gamitin ito sa pamamagitan ng pagtatakda ng environment variable VAN_PG_HOST. Halimbawa, upang magpatakbo ng mga pagsubok van.pg laban sa isang lokal na PostgreSQL server na may ito ay socket sa / tmp / pgcluster gawin:
VAN_PG_HOST = / tmp / pgcluster python setup.py pagsubok
BABALA: ang anumang database na nagsisimula sa test_db sa target na database ay malamang na bumaba.
Pagsasara Connections
Mag-ingat upang maayos na isara ang lahat ng mga koneksyon sa database sa sandaling iyong pagsubok ay tapos na gamit ito. Hindi pinapayagan ng PostgreSQL ay drop sa mga database habang mayroong mga bukas na koneksyon. Magiging sanhi ito ng van.pg sa error kapag sinusubukan mong i-drop ang mga pagsubok database.
program paglikha ng isang kumpol
Sa isang mas mababang antas, maaari mo ring manipulahin sa programa ng iyong sariling kumpol PostgreSQL.
Initialize ang Cluster:
& Nbsp; >>> mula van.pg import Cluster
& Nbsp; >>> kumpol = Cluster ()
& Nbsp; >>> cluster.initdb ()
Na lumilikha ng isang database sa isang pansamantalang direktoryo:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION' sa os.listdir (dbdir)
& Nbsp; True
Magsimula ito:
& Nbsp; >>> cluster.start ()
Lumikha / Subukan ang isang database:
& Nbsp; >>> dbname = cluster.createdb ()
Maaari naming kumonekta sa database:
& Nbsp; >>> import psycopg2
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> kuprum = conn.cursor ()
Paikutin ang database upang matiyak na maaari naming gawin ang mga pangunahing kaalaman:
& Nbsp; >>> cur.execute ("LILIKHA TALAAN x (y int)")
& Nbsp; >>> cur.execute ("INSERT SA x halaga (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("Piliin * mula sa x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Itigil ang kumpol diyablo:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Simulan muli ito:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> kuprum = conn.cursor ()
& Nbsp; >>> cur.execute ("Piliin * mula sa x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
At cleanup:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir ay Wala
& Nbsp; True
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Mali
Pag-unlad
Pagpapaunlad nagaganap sa GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Ano ang bagong sa paglabas:

  • Suporta Python 3.2.
  • Drop Python 2.5 suporta.
  • Magdagdag tox.ini para sa pagsubok laban sa maramihang mga bersyon python.
  • Run PostgreSQL bilang isang subprocess sa halip na bilang isang diyablo (sa pamamagitan ng pg_ctl).
  • Muling ayusin ang code upang mapabuti ang muling paggamit at test coverage.

Mga Kinakailangan :

  • Python

Katulad na software

KaliVeda
KaliVeda

20 Feb 15

PyHamcrest
PyHamcrest

11 May 15

UPPAAL
UPPAAL

2 Jun 15

proboscis
proboscis

20 Feb 15

Iba pang mga software developer ng Brian Sutherland

wesgi
wesgi

11 May 15

Mga komento sa van.pg

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!