你如何测试你使用postgresql的python DAL。python中的数据库测试,postgresql
在sqlite中,您可以为每个测试都创建内存数据库,但这不能用于postgresql。
我想要一个库,可以用来设置数据库并在测试完成后清理它。
我正在使用Sqlalchemy作为我的ORM。
你如何测试你使用postgresql的python DAL。python中的数据库测试,postgresql
在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
将等待所有活动连接关闭。
也有QuickPiggy,它可以自行清理。 从文档:
甲临时PostgreSQL的实例可以很容易地获得:
猪= quickpiggy.Piggy(挥发性=真,CREATE_DB = 'somedb')
康恩= psycopg2.connect (pig.dsnstring())
@Luper Rouch:我应该如何清理,以便数据库在测试完成后处于相同状态。我不认为启动/回滚事务是解决方案。 – StackUnderflow 2010-04-27 17:31:39
你可以从拆卸整个数据库开始。 – 2010-04-27 17:36:30
所以我将不得不为每个测试创建一个新的数据库实例..不会让测试非常慢?..我只想要清理数据库中的所有数据...我想我可以编写SQL来清理所有表格数据在拆解..虽然我正在寻找像SQLUnit – StackUnderflow 2010-04-27 17:40:08