van.pg

軟件截圖:
van.pg
軟件詳細信息:
版本: 2.0
上傳日期: 14 Apr 15
許可: 免費
人氣: 66

Rating: 5.0/5 (Total Votes: 1)

van.pg是一個Python模塊,可輕鬆創建PostgreSQL數據庫(和集群)進行單元測試。
骯髒的數據庫
測試數據庫需要很長的時間來創建。一般來說,你需要小心一點,當你決定要刪除/重新創建一個測試數據庫夾具。
此外,還有似乎是在PostgreSQL裡沒有可靠的方法搞清楚,如果數據庫致力於與否。
所以van.pg別無選擇,只能把對你的責任通知,當一個數據庫是骯髒的。如果不正確地進行,試驗隔離將受到損害。這不是理想的,但我們可以做的最好的。
唯一的例外是,如果你堅持使用事務包(http://pypi.python.org/pypi/transaction)來管理數據庫提交。在這種情況下,你可以要求資源被弄髒每當事務被提交。
與testresources集成
典型的方式來使用這些裝置是通過testresources(http://pypi.python.org/pypi/testresources/):
 從>>>進口testresources ResourcedTestCase
 從>>>進口van.pg數據庫管理器
  >>>進口psycopg2
  >>>高清init_db(DB):
  ...康恩= psycopg2.connect(主機= db.host,數據庫= db.database)
  ... CUR = conn.cursor()
  ... cur.execute(“CREATE TABLE FOO(巴整數)”)
  ... conn.commit()
  ... conn.close()
  >>>類MyTest的(ResourcedTestCase):
  ...
  ...資源= [(“DB”,數據庫管理器(initialize_sql = init_db))]
  ...
  ......高清的runTest(個體經營):
  ...康恩= psycopg2.connect(主機= self.db.host,數據庫= self.db.database)
  ... CUR = conn.cursor()
  ... cur.execute(“(1)INSERT INTO foo的價值觀;”)
  ... conn.commit()
  ... CUR = conn.cursor()
  ... cur.execute(“SELECT * FROM富”)
  ... self.assertEquals(cur.fetchall()[(1)])
  ...#注:必須關閉連接或刪除數據庫失敗
  ... conn.close()
  ... self.db.dirtied()#我們改變了DB,所以它需要重新加載
實際運行測試:
 從>>>單元測試進口TextTestRunner
  >>>進口SYS
  >>>亞軍= TextTestRunner(流= sys.stdout的)
  >>> runner.run(MyTest的())#文檔測試:+省略號
&NBSP ;.
  ...
  OK
  ...
使用模板數據庫
如果您需要重新創建同一個數據庫多次,它可以更快地讓PostgreSQL的複製數據庫的模板數據庫。你可以通過讓一個DatabaseManager作為另一個模板做到這一點:
  >>> template_db =數據庫管理器(initialize_sql = init_db)
  >>>類MyTest2(MyTest的):
  ...資源= [(“DB”,數據庫管理器(模板= template_db))]
  >>> runner.run(MyTest2())#文檔測試:+省略號
&NBSP ;.
  ...
  OK
  ...
交易整合
如果變元dirty_on_commit的關鍵字是真,因為弄髒以後每隔全成通過交易模塊提交了一個數據庫管理器將迎來數據庫。這意味著每一個測試,弄髒數據庫不必手動通知它。
  >>>男人=數據庫管理器(dirty_on_commit =真)
如果您使用此功能,你需要依賴於交易(http://pypi.python.org/pypi/transaction)包裝自己。
將現有數據庫
默認情況下,van.pg創建一個臨時目錄中一個新的PostgreSQL集群,並啟動一個PostgreSQL守護進程。這工作的大部分時間,但不是非常快。
如果你有一個已經運行的PostgreSQL集群,你可以告訴van.pg通過設置環境變量VAN_PG_HOST使用它。例如,運行van.pg的測試,對本地PostgreSQL服務器與它的插座在/ tmp / pgcluster做:
VAN_PG_HOST =的/ tmp / pgcluster蟒蛇setup.py測試
警告:任何數據庫開始TEST_DB目標數據庫中有可能被丟棄。
關閉連接
小心妥善關閉所有連接到數據庫,一旦您的測試是用它做。 PostgreSQL的不允許刪除數據庫同時也有打開的連​​接。這將導致van.pg試圖刪除測試數據庫時出錯。
編程方式創建一個集群
在一個較低的水平,你也可以通過編程操縱自己的PostgreSQL集群。
初始化集群:
 從>>>進口van.pg集群
  >>>集群=集群()
  >>> cluster.initdb()
它創建一個臨時目錄數據庫:
  >>>進口OS
  >>> DBDIR = cluster.dbdir
 在>>> os.listdir'PG_VERSION“(DBDIR)
 真
啟動它:
  >>> cluster.start()
創建/測試數據庫:
  >>> DBNAME = cluster.createdb()
我們可以連接到數據庫:
  >>>進口psycopg2
  >>>康恩= psycopg2.connect(數據庫= DBNAME,主機= cluster.dbdir)
  >>> CUR = conn.cursor()
擺弄數據庫,以確保我們可以做的基本知識:
  >>> cur.execute(“CREATE TABLE X(Y INT)”)
  >>> cur.execute(“INSERT INTO x值(1)”)
  >>> conn.commit()
  >>> cur.execute(“SELECT * FROM X”)
  >>> cur.fetchall()[0] [0]
  1
停止集群守護進程:
  >>> conn.close()
  >>> cluster.stop()
再次啟動:
  >>> cluster.start()
  >>>康恩= psycopg2.connect(數據庫= DBNAME,主機= cluster.dbdir)
  >>> CUR = conn.cursor()
  >>> cur.execute(“SELECT * FROM X”)
  >>> cur.fetchall()[0] [0]
  1
和清理:
  >>> conn.close()
  >>> cluster.cleanup()
  >>> cluster.dbdir是無
 真
  >>> os.path.exists(DBDIR)
 假
發展
發展發生在GitHub上:
  HTTP://github.com/jinty/van.pg

什麼在此版本中是新的

  • 在支持Python的3​​.2。
  • 在降2.5 Python的支持。
  • 添加tox.ini用於對多個Python版本的測試。
  • 運行PostgreSQL的一個子進程,而不是作為一個守護進程(通過使用pg_ctl)。
  • 重新組織代碼,以提高重用和測試覆蓋率。

要求

  • 在Python中

類似的軟件

QSnipps
QSnipps

12 May 15

lintswitch
lintswitch

15 Apr 15

pycdep
pycdep

11 May 15

Speccer
Speccer

14 Apr 15

顯影劑的其他軟件 Brian Sutherland

wesgi
wesgi

11 May 15

意見 van.pg

評論沒有發現
添加評論
打開圖片!