van.pg

Software kuvakaappaus:
van.pg
Ohjelmiston tiedot:
Versio: 2.0
Lähetyksen päivämäärä: 14 Apr 15
Kehittäjä: Brian Sutherland
Lupa: Vapaa
Suosio: 5

Rating: nan/5 (Total Votes: 0)

van.pg on Python-moduuli, joka tarjoaa helpon luomisen PostgreSQL tietokantoja (ja klusterit) yksikkötestaus.
Dirty Tietokannat
Testaa tietokannat kestää kauan luoda. Yleensä sinun täytyy olla hieman varovainen, kun päätät poistaa / luoda testitietokannassa telineeseen.
Lisäksi siellä näyttäisi olevan mitään päättäväisesti PostgreSQL selvittämiseen, jos tietokanta oli sitoutunut tai ei.
Joten van.pg ei ole muuta paikka vastuuta sinua ilmoittamaan, kun tietokanta on likainen. Jos tätä ei tehdä kunnolla, testi eristäminen vaarantuu. Se ei ole ihanteellinen, mutta parasta mitä voimme tehdä.
Poikkeuksena on, jos käyttää johdonmukaisesti kauppa paketti (http://pypi.python.org/pypi/transaction) hoitaa tietokantaa syyllistyy. Tässä tapauksessa voit pyytää resurssin dirtied aina liiketoimi on sitoutunut.
Integrointi testresources
Tyypillinen tapa käyttää näitä kalusteet on kautta testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> päässä testresources tuoda ResourcedTestCase
& Nbsp; >>> päässä van.pg tuonti DatabaseManager
& Nbsp; >>> tuonti psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... Conn = psycopg2.connect (isäntä = db.host, tietokanta = db.database)
& Nbsp; ... nyk = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar kokonaisluku);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> luokan MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... resurssit = [("DB", DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (itse):
& Nbsp; ... Conn = psycopg2.connect (isäntä = self.db.host, tietokanta = self.db.database)
& Nbsp; ... nyk = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO foo VALUES (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... nyk = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # HUOMIO: on läheiset yhteydet tai pudottamalla tietokantoja epäonnistuu
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # muutimme DB, joten se tarvitsee uudelleen lastaus
Oikeastaan ​​ajaa testi:
& Nbsp; >>> päässä unittest tuonti TextTestRunner
& Nbsp; >>> tuonti sys
& Nbsp; >>> kakkonen = TextTestRunner (virta = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + ELLIPSIS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
käyttäminen sapluuna tietokannat
Jos haluat luoda samaan tietokantaan monta kertaa, se voi olla nopeampi antaa PostgreSQL kopioida tietokannan kaavaintietokannassa. Voit tehdä tämän, jossa on yksi DatabaseManager toimia mallina toiselle:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> luokan MyTest2 (MyTest):
& Nbsp; ... resurssit = [("DB", DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + ELLIPSIS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Kaupan yhdentyminen
Jos avainsana argumen dirty_on_commit on totta, DatabaseManager tulee merkitä tietokannan dirtied välein onnistunut sitoutua kautta liiketoimi moduuli. Tämä tarkoittaa, että jokainen testi, joka likaa tietokantaa ei tarvitse käsin tiedoksi.
& Nbsp; >>> ihminen = DatabaseManager (dirty_on_commit = True)
Jos käytät tätä toimintoa, sinun täytyy riippuu kauppa (http://pypi.python.org/pypi/transaction) paketti itsellesi.
käyttäminen tietokannasta
Oletuksena van.pg luo uusi PostgreSQL klusteri väliaikaiseen hakemistoon ja käynnistää PostgreSQL daemon. Tämä toimii suurimman osan ajasta, mutta ei ole kovin nopeaa.
Jos sinulla on jo käynnissä PostgreSQL klusteri, voit kertoa van.pg käyttää sitä asettamalla muuttujan VAN_PG_HOST. Esimerkiksi ajaa van.pg n testejä vastaan ​​paikallinen PostgreSQL palvelimelle kanssa on pistorasiat / tmp / pgcluster tehdä:
VAN_PG_HOST = / tmp / pgcluster python setup.py testi
VAROITUS: kaikki tietokannat alkaen test_db kohde tietokantaan todennäköisesti pudonnut.
Closing Liitännät
Ole varovainen oikein sulkea kaikki yhteydet tietokantaan kun testi on tehty sen kanssa. PostgreSQL ei salli pudottamalla tietokantoja kun on avoimia yhteyksiä. Tämä aiheuttaa van.pg virheestä kun yrittää pudottaa testitietokannassa.
programatically luoda klusterin
Alemmalla tasolla, voit myös käsitellä ohjelmallisesti oman PostgreSQL klusterin.
Alusta Cluster:
& Nbsp; >>> päässä van.pg tuonti Cluster
& Nbsp; >>> klusteri = Cluster ()
& Nbsp; >>> cluster.initdb ()
Joka luo tietokannan väliaikaiseen hakemistoon:
& Nbsp; >>> tuonti os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> "PG_VERSION" in os.listdir (dbdir)
& Nbsp; True
Aloita se:
& Nbsp; >>> cluster.start ()
Luo / Testaa tietokanta:
& Nbsp; >>> dbname = cluster.createdb ()
Voimme yhteyden tietokantaan:
& Nbsp; >>> tuonti psycopg2
& Nbsp; >>> yht = psycopg2.connect (tietokanta = dbname, isäntä = cluster.dbdir)
& Nbsp; >>> nyk = conn.cursor ()
Pyöritellä tietokanta varmistaa voimme tehdä perusasiat:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VALUES (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * x:")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Lopeta klusterin daemon:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Aloita uudelleen:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> yht = psycopg2.connect (tietokanta = dbname, isäntä = cluster.dbdir)
& Nbsp; >>> nyk = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * x:")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Ja siivous:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir on None
& Nbsp; True
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Development
Kehitys tapahtuu GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Mitä uutta tässä julkaisussa:

  • Tuki Python 3.2.
  • Drop Python 2.5 tuki.
  • Lisää tox.ini testattaviksi useita python versioita.
  • Suorita PostgreSQL kuin aliprosessin eikä daemon (via pg_ctl).
  • Re-järjestää koodi parantaa uudelleenkäyttöä ja testi kattavuus.

Vaatimukset :

  • Python

Vastaavia ohjelmistoja

PyUseCase
PyUseCase

11 May 15

databene benerator
databene benerator

14 Apr 15

pytest-quickcheck
pytest-quickcheck

14 Apr 15

lintswitch
lintswitch

15 Apr 15

Muu ohjelmistojen kehittäjä Brian Sutherland

wesgi
wesgi

11 May 15

Kommentit van.pg

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!