你如何对使用postgresql的python DAL进行单元测试。
在sqlite中,您可以为每个测试创建内存数据库,但这不能用于postgresql。
我想要一个可用于设置数据库的库,并在测试完成后清理它。
我使用Sqlalchemy作为我的ORM。
您可以使用nose编写测试,然后使用SQLAlchemy在setup/teardown方法中创建和清理测试数据库。
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
将等待所有活动连接关闭。
你试过testing.postgresql吗?
还有QuickPiggy,它能够自行清理。来自文档:
可以很容易地获得临时PostgresQL实例:
pig = quickpiggy.Piggy(volatile = True,create_db ='somedb')
conn = psycopg2.connect(pig.dsnstring())