van.pg

Software skärmdump:
van.pg
Mjukvaruinformation:
Version: 2.0
Ladda upp dagen: 14 Apr 15
Utvecklare: Brian Sutherland
Licens: Gratis
Popularitet: 5

Rating: nan/5 (Total Votes: 0)

van.pg är en Python-modul som ger enkel skapandet av PostgreSQL databaser (och kluster) för enhetstestning.
Dirty Databaser
Test databaser tar lång tid att skapa. I allmänhet måste du vara lite försiktig när du bestämmer dig för att ta bort / återskapa en testdatabas fixtur.
Också, det verkar inte finnas något robust sätt PostgreSQL för att räkna ut om en databas begicks till eller inte.
Så van.pg har inget annat val än att lägga ansvaret på dig att anmäla när en databas är smutsig. Om detta inte görs på rätt sätt, kommer prov isolering äventyras. Det är inte idealiskt, men det bästa vi kan göra.
Ett undantag är om du konsekvent använder transaktionspaketet (http://pypi.python.org/pypi/transaction) för att hantera databasen begår. I det här fallet kan du be om resursen ska smutsas när en transaktion begås.
Integration med testresources
Det typiska sättet att använda dessa armaturer är via testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> från testresources importera ResourcedTestCase
& Nbsp; >>> från van.pg import DatabaseManager
& Nbsp; >>> import psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... uppk = psycopg2.connect (värd = db.host, databas = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar INTEGER);")
& Nbsp; ... conn.commit ()
& Nbsp; ... conn.close ()
& Nbsp; >>> klass MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... resurser = [('db ", DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def runTest (själv):
& Nbsp; ... uppk = psycopg2.connect (värd = self.db.host, databas = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO foo VÄRDEN (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1,)])
& Nbsp; ... # OBS: måste stänga anslutningar eller släppa databaser misslyckas
& Nbsp; ... conn.close ()
& Nbsp; ... self.db.dirtied () # vi ändrat DB, så den behöver omlastning
Egentligen kör testet:
& Nbsp; >>> från unittest import TextTestRunner
& Nbsp; >>> import sys
& Nbsp; >>> löpare = TextTestRunner (stream = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + ELLIPS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Använda mall databaser
Om du behöver för att återskapa samma databas flera gånger, kan det gå snabbare att låta PostgreSQL kopiera databasen från en mall databas. Du kan göra detta genom att ha en DatabaseManager tjäna som mall för en annan:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> klass MyTest2 (MyTest):
& Nbsp; ... resurser = [('db ", DatabaseManager (mall = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + ELLIPS
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
integrationstransaktion
Om nyckelordet argumen dirty_on_commit är sant, kommer en DatabaseManager markera databas som dirtied efter varje lyckad begå görs genom transaktionen modulen. Detta innebär att varje test som smutsar databasen behöver inte manuellt anmäla.
& Nbsp; >>> mannen = DatabaseManager (dirty_on_commit = sant)
Om du använder den här funktionen måste du lita på transaktionen (http://pypi.python.org/pypi/transaction) paketera själv.
Använda en befintlig databas
Som standard skapar van.pg ett nytt PostgreSQL kluster i en temporär katalog och lanserar en PostgreSQL-demon. Detta fungerar för det mesta, men är inte särskilt snabbt.
Om du har en redan kör PostgreSQL kluster, kan du berätta van.pg använda den genom att ställa in miljövariabeln VAN_PG_HOST. Till exempel, för att köra van.pg tester mot en lokal PostgreSQL-server med dess uttag i / tmp / pgcluster göra:
VAN_PG_HOST = / tmp / pgcluster python setup.py testet
VARNING: alla databaser som börjar med test_db i målet databasen kommer sannolikt att släppas.
Utgående anslutningar
Var noga med att ordentligt stänga alla anslutningar till databasen när testet görs med den. PostgreSQL tillåter inte släppa databaser medan det finns öppna anslutningar. Detta kommer att orsaka van.pg för fel när man försöker släppa testdatabasen.
programatically skapa ett kluster
På en lägre nivå, kan du också programmässigt manipulera din egen PostgreSQL kluster.
Initiera Cluster:
& Nbsp; >>> från van.pg import Cluster
& Nbsp; >>> kluster = Cluster ()
& Nbsp; >>> cluster.initdb ()
Vilket skapar en databas i en tillfällig katalog:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> 'PG_VERSION "i os.listdir (dbdir)
& Nbsp; Sann
Starta det:
& Nbsp; >>> cluster.start ()
Skapa / Testa en databas:
& Nbsp; >>> dbname = cluster.createdb ()
Vi kan ansluta till databasen:
& Nbsp; >>> import psycopg2
& Nbsp; >>> uppk = psycopg2.connect (databas = dbname, värd = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Rulla databasen för att se till att vi kan göra grunderna:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO x VÄRDEN (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * från x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Stoppa kluster demonen:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.stop ()
Starta det igen:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> uppk = psycopg2.connect (databas = dbname, värd = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * från x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Och sanering:
& Nbsp; >>> conn.close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir är Ingen
& Nbsp; Sann
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; Falskt
utveckling
Utvecklingen sker på GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Vad är nytt i den här versionen:

  • Support Python 3.2.
  • Drop Python 2.5 stöd.
  • Lägg tox.ini för testning mot flera python-versioner.
  • Kör PostgreSQL som en under snarare än som en demon (via pg_ctl).
  • Omorganisera kod för att förbättra återanvändning och testtäckning.

Krav :

  • Python

Liknande mjukvara

iogen
iogen

2 Jun 15

Flyspray
Flyspray

3 Jun 15

lava-vcs
lava-vcs

14 Apr 15

Annan programvara för utvecklare Brian Sutherland

wesgi
wesgi

11 May 15

Kommentarer till van.pg

Kommentarer hittades inte
Kommentar
Slå på bilder!