van.pg

Software screenshot:
van.pg
Podrobnosti Software:
Verze: 2.0
Datum uploadu: 14 Apr 15
Vývojka: Brian Sutherland
Licence: Volný
Popularita: 5

Rating: nan/5 (Total Votes: 0)

van.pg je Python modul, který umožňuje snadné vytváření databází PostgreSQL (a klastrů) na jednotkové testy.
Dirty Databáze
Testovací databáze trvat dlouho vytvořit. Obecně musíte být trochu opatrní, když se rozhodnete odstranit / obnovit zkušební databáze přípravek.
Také se zdá, že žádný robustní způsob, PostgreSQL zjišťuje, pokud databáze byl spáchán, nebo ne.
Takže van.pg nemá jinou možnost, než umístit odpovědnost na vás informovat, když databáze je špinavý. Pokud toto není provedeno správně, bude zkouška izolace být ohrožena. Není to ideální, ale to nejlepší, co můžeme udělat.
Jedinou výjimkou je, pokud budete důsledně použít balíček transakce (http://pypi.python.org/pypi/transaction) pro správu databáze se zavazuje. V tomto případě můžete požádat o zdroj, který by znečistil vždy, když je transakce potvrzena.
Integrace s testresources
Typický způsob, jak používat tyto přípravky je přes testresources (http://pypi.python.org/pypi/testresources/):
& Nbsp; >>> od testresources import ResourcedTestCase
& Nbsp; >>> od van.pg dovozu DatabaseManager
& Nbsp; >>> import psycopg2
& Nbsp; >>> def init_db (db):
& Nbsp; ... Conn = psycopg2.connect (host = db.host, databáze = db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("CREATE TABLE foo (bar integer);")
& Nbsp; ... conn.commit ()
& Nbsp; ... Conn.Close ()
& Nbsp; >>> třída MyTest (ResourcedTestCase):
& Nbsp; ...
& Nbsp; ... zdroje = [("db", DatabaseManager (initialize_sql = init_db))]
& Nbsp; ...
& Nbsp; ... def RUNTEST (self):
& Nbsp; ... Conn = psycopg2.connect (host = self.db.host, databáze = self.db.database)
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("INSERT INTO foo VALUES (1);")
& Nbsp; ... conn.commit ()
& Nbsp; ... cur = conn.cursor ()
& Nbsp; ... cur.execute ("SELECT * FROM foo")
& Nbsp; ... self.assertEquals (cur.fetchall (), [(1)])
& Nbsp; ... # Poznámka: je třeba uzavřít připojení nebo zrušení databází selže
& Nbsp; ... Conn.Close ()
& Nbsp; ... self.db.dirtied () # jsme změnili DB, takže je třeba re-loading
Vlastně spustit test:
& Nbsp; >>> od unittest dovozu TextTestRunner
& Nbsp; >>> import sys
& Nbsp; >>> běžec = TextTestRunner (proud = sys.stdout)
& Nbsp; >>> runner.run (MyTest ()) # doctest: + elipsa
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
Databáze Používání šablon
Pokud potřebujete znovu stejné databázi mnohokrát, to může být rychlejší, aby PostgreSQL zkopírovat databázi z databáze šablony. Můžete to udělat tím, že má jednu DatabaseManager sloužit jako vzor pro další:
& Nbsp; >>> template_db = DatabaseManager (initialize_sql = init_db)
& Nbsp; >>> třída MyTest2 (MyTest):
& Nbsp; ... zdroje = [("db", DatabaseManager (template = template_db))]
& Nbsp; >>> runner.run (MyTest2 ()) # doctest: + elipsa
& Nbsp ;.
& Nbsp; ...
& Nbsp; OK
& Nbsp; ...
integrace transakce
V případě, že klíčové slovo argumen dirty_on_commit je pravda, bude DatabaseManager označit databázi jako zašpiněná po každé úspěšné commit provádí prostřednictvím modulu transakce. To znamená, že každý test, který znečišťuje databáze nemusí ručně oznámit to.
& Nbsp; >>> člověk = DatabaseManager (dirty_on_commit = True)
Pokud použijete tuto funkci, musíte spoléhat na transakci (http://pypi.python.org/pypi/transaction) zabalit sami.
Použití existující databáze
Ve výchozím nastavení, van.pg vytvoří nový PostgreSQL clusteru do dočasného adresáře a spustí PostgreSQL démona. To funguje většinu času, ale není velmi rychle.
Máte-li již běží PostgreSQL clusteru, můžete říct van.pg jej používat nastavením proměnné prostředí VAN_PG_HOST. Chcete-li například spustit testy van.pg proti místním PostgreSQL serveru, přičemž je to zásuvky / tmp / pgCluster dělat:
VAN_PG_HOST = / tmp / pgCluster python setup.py zkouška
UPOZORNĚNÍ: všechny databáze počínaje test_db v cílové databázi budou pravděpodobně zrušen.
Závěrečné Připojení
Dávejte pozor, aby řádně uzavřít všechna připojení k databázi, jakmile je váš zkouška s ním udělal. PostgreSQL neumožňuje zrušení databází, zatímco tam jsou otevřené spojení. To způsobí, že van.pg chyby při pokusu o přetažení testovací databáze.
programově vytváří shluk
Na nižší úrovni, můžete také programově manipulovat vlastní PostgreSQL clusteru.
Inicializace seskupení:
& Nbsp; >>> od van.pg dovozu Cluster
& Nbsp; >>> clusteru = Cluster ()
& Nbsp; >>> cluster.initdb ()
Což vytvoří databázi do dočasného adresáře:
& Nbsp; >>> import os
& Nbsp; >>> dbdir = cluster.dbdir
& Nbsp; >>> "PG_VERSION" v os.listdir (dbdir)
& Nbsp; pravda
Začátek je:
& Nbsp; >>> cluster.start ()
Vytvořit / Otestujte databázi:
& Nbsp; >>> dbname = cluster.createdb ()
Můžeme se připojit k databázi:
& Nbsp; >>> import psycopg2
& Nbsp; >>> Conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
Kroutit databázi, aby se ujistil, co můžeme udělat základy:
& Nbsp; >>> cur.execute ("CREATE TABLE x (y int)")
& Nbsp; >>> cur.execute ("INSERT INTO hodnoty X (1)")
& Nbsp; >>> conn.commit ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
Zastavte clusteru démona:
& Nbsp; >>> Conn.Close ()
& Nbsp; >>> cluster.stop ()
Začít znovu:
& Nbsp; >>> cluster.start ()
& Nbsp; >>> Conn = psycopg2.connect (database = dbname, host = cluster.dbdir)
& Nbsp; >>> cur = conn.cursor ()
& Nbsp; >>> cur.execute ("SELECT * FROM x")
& Nbsp; >>> cur.fetchall () [0] [0]
& Nbsp; 1
A vyčištění:
& Nbsp; >>> Conn.Close ()
& Nbsp; >>> cluster.cleanup ()
& Nbsp; >>> cluster.dbdir je None
& Nbsp; pravda
& Nbsp; >>> os.path.exists (dbdir)
& Nbsp; False
Development
Vývoj probíhá na GitHub:
& Nbsp; http: //github.com/jinty/van.pg

Co je nového v této verzi:

  • Podpora Python 3.2.
  • Drop Python 2.5 support.
  • Přidat tox.ini pro testování před několika verzích Pythonu.
  • Spustit PostgreSQL jako podproces spíše než jako démon (přes pg_ctl).
  • Znovu uspořádat kód ke zlepšení opětovného použití a zkušební pokrytí.

Požadavky na :

  • Python

Podobný software

nose-selecttests
nose-selecttests

20 Feb 15

noselog
noselog

20 Feb 15

filterunit
filterunit

11 May 15

tdaemon
tdaemon

11 May 15

Ostatní software developer Brian Sutherland

wesgi
wesgi

11 May 15

Komentáře k van.pg

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!