5

你如何測試你使用postgresql的python DAL。python中的數據庫測試,postgresql

在sqlite中,您可以爲每個測試都創建內存數據庫,但這不能用於postgresql。

我想要一個庫,可以用來設置數據庫並在測試完成後清理它。

我正在使用Sqlalchemy作爲我的ORM。

回答

2

您可以使用nose來編寫測試,然後使用SQLAlchemy在您的setup/teardown方法中創建並清理測試數據庫。

+0

@Luper Rouch:我應該如何清理,以便數據庫在測試完成後處於相同狀態。我不認爲啓動/回滾事務是解決方案。 – StackUnderflow 2010-04-27 17:31:39

+0

你可以從拆卸整個數據庫開始。 – 2010-04-27 17:36:30

+0

所以我將不得不爲每個測試創建一個新的數據庫實例..不會讓測試非常慢?..我只想要清理數據庫中的所有數據...我想我可以編寫SQL來清理所有表格數據在拆解..雖然我正在尋找像SQLUnit – StackUnderflow 2010-04-27 17:40:08

3

pg_tmp(1)是一個實用程序,旨在使此任務變得輕鬆。這裏是你將如何啓動與SQLAlchemy的一個新的連接:

from subprocess import check_output 
from sqlalchemy import create_engine 

url = check_output(['pg_tmp', '-t']) 
engine = create_engine(url) 

這將旋轉起來是在60秒後自動摧毀了一個新的數據庫。如果連接打開,pg_tmp將等待所有活動連接關閉。

0

也有QuickPiggy,它可以自行清理。 從文檔:

甲臨時PostgreSQL的實例可以很容易地獲得:

豬= quickpiggy.Piggy(揮發性=真,CREATE_DB = 'somedb')

康恩= psycopg2.connect (pig.dsnstring())