Van.pg

Hulpmiddelen om postgreSQL-clusters programmatisch te beheren als Python-testarmaturen
Download nu

Van.pg Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • BSD License
  • Naam uitgever:
  • Brian Sutherland
  • Uitgever website:
  • http://vanguardistas.net

Van.pg Tags


Van.pg Beschrijving

Gereedschappen om PostgreSQL-clusters programmatisch te beheren als Python-testarmaturen van.pg is een Python module die gemakkelijke creatie van PostgreSQL databases (en clusters) voorziet unit testing.Dirty DatabasesTest databases neem een lange tijd te maken. In het algemeen moet je een beetje voorzichtig als u besluit om te verwijderen / opnieuw een test-database fixture.Also te zijn, lijkt er geen robuuste manier in PostgreSQL van het uitzoeken als er een database is gepleegd of not.So van.pg heeft geen te zijn andere keuze dan de verantwoordelijkheid bij de plaats je aan te melden wanneer een database is vuil. Als dit niet goed wordt gedaan, zal testen isolatie worden aangetast. Het is niet ideaal, maar het beste wat we kunnen do.One uitzondering is wanneer je consequent de transactie pakket (http://pypi.python.org/pypi/transaction) gebruiken om de database commits te beheren. In dat geval kunt u vragen om de bron te worden bevuild wanneer een transactie committed.Integration met testresourcesThe typische manier om deze armaturen te gebruiken is via testresources (http://pypi.python.org/pypi/testresources/): >>> van testresources importeren ResourcedTestCase >>> van van.pg invoer DatabaseManager >>> >>> import psycopg2 def init_db (db): ... conn = psycopg2.connect (host = db.host, database = db.database) .. . cur = conn.cursor () ... cur.execute ( "CREATE TABLE foo (bar INTEGER)") ... conn.commit () ... conn.close () >>> klasse MyTest (ResourcedTestCase) : ... ... resources = ... ... def runtest (zelf): ... conn = psycopg2.connect (host = self.db. host, Database = self.db.database) ... cur = conn.cursor () ... cur.execute ( "INSERT INTO foo WAARDEN (1)") ... conn.commit () ... cur = conn.cursor () ... cur.execute ( "SELECT * FROM foo") ... self.assertEquals (cur.fetchall () ) ... # LET OP: moet verbindingen te sluiten of dropping databases mislukt ... conn.close () ... self.db.dirtied () # we veranderde de DB, dus het moet re-loadingActually voert u de test: >>> van unittest import TextTestRunner >>> import sys >>> runner = TextTestRunner ( stroom = sys.stdout) >>> runner.run (MyTest ()) # doctest: + ellipsis. ... OK ... Met behulp van een sjabloon databasesIf je nodig hebt om dezelfde database vele malen opnieuw, kan het sneller te laten PostgreSQL kopiëren van de database van een sjabloon database. U kunt dit doen door het hebben van één DatabaseManager dienen als sjabloon voor een ander: >>> template_db = DatabaseManager (initialize_sql = init_db) >>> klasse MyTest2 (MyTest): ... resources = >>> runner.run (MyTest2 ()) # doctest: + ellipsis. ... OK ... transactie integrationIf het trefwoord argumen dirty_on_commit is True, een DatabaseManager zal de database markeren als vervuild na elke succesvolle commit gemaakt door de transactie module. Dit betekent dat elke test die dirties de database niet handmatig hoeft te melden. >>> man = DatabaseManager (dirty_on_commit = True) Als u deze functie gebruikt, moet u afhankelijk van de transactie (http://pypi.python.org/pypi/transaction) pakket yourself.Using een bestaande databaseBy standaard busje. pg creëert een nieuwe PostgreSQL cluster in een tijdelijke map en lanceert een PostgreSQL daemon. Dit werkt het merendeel van de tijd, maar is niet erg fast.If heb je een al actief PostgreSQL cluster, u kunt vertellen van.pg om het te gebruiken door het instellen van de omgevingsvariabele VAN_PG_HOST. Bijvoorbeeld, om van.pg's testen tegen een lokale PostgreSQL server te draaien met zijn stopcontacten in / tmp / pgcluster doen: VAN_PG_HOST = / tmp / pgcluster python setup.py testWARNING: any databases te beginnen met test_db in de doeldatabase worden waarschijnlijk te laten vallen .Closing ConnectionsBe voorzichtig om goed sluit alle verbindingen met de database zodra uw test wordt gedaan met het. PostgreSQL staat niet toe te laten vallen databases terwijl er open verbindingen. Dit zal van.pg veroorzaken fout wanneer het proberen om de test database.Programatically het creëren van een clusterAt een lager niveau te laten vallen, kunt u ook programmatisch manipuleren uw eigen PostgreSQL cluster.Initialize de Cluster: >>> van van.pg import Cluster >>> cluster = cluster () >>> cluster.initdb () Welke een database in een tijdelijke map creëert: >>> import os >>> dbdir = cluster.dbdir >>> 'PG_VERSION' in os.listdir (dbdir) TrueStart is : >>> cluster.start () maken / Test een database: >>> dbname = cluster.createdb () Wij kunnen verbinding maken met de database: >>> import psycopg2 >>> conn = psycopg2.connect (database = dbname, host = cluster.dbdir) >>> cur = conn.cursor () Friemel met de database om ervoor te zorgen dat we kunnen doen de basis: >>> cur.execute ( "CREATE TABLE x (y int)") >>> cur. execute ( "INSERT INTO x WAARDEN (1)") >>> conn.commit () >>> cur.execute ( "SELECTEER * van x") >>> cur.fetchall () 1Stop de cluster daemon: >>> conn.close () >>> cluster.stop () Ga weer: >>> cluster.start () >>> conn = psycopg2.connect (database = Dbname, host = cluster.dbdir) >>> cur = conn.cursor () >>> cur.execute ( "SELECTEER * van x") >>> cur.fetchall () 1En cleanup: >>> conn.close () >>> cluster.cleanup () >>> cluster.dbdir is geen True >>> os.path.exists (dbdir) FalseDevelopmentDevelopment vindt plaats op GitHub: http://github.com/ Jinty / van.pg Vereisten: · Python


Van.pg Gerelateerde software

Speedtest

-programma dat wordt gebruikt om de snelheid van Java-code op verschillende computerplatforms te testen. ...

175

Downloaden