您如何对使用postgresql的python数据访问层进行单元测试?
在sqlite中,您可以为每个测试创建内存数据库,但是postgresql无法实现这一点。
我希望能够使用一个库来设置数据库并在测试完成后清理它。
我正在使用Sqlalchemy作为我的ORM。
您如何对使用postgresql的python数据访问层进行单元测试?
在sqlite中,您可以为每个测试创建内存数据库,但是postgresql无法实现这一点。
我希望能够使用一个库来设置数据库并在测试完成后清理它。
我正在使用Sqlalchemy作为我的ORM。
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,它能够自我清理。
从文档中可以看到:可以很容易地获得一个临时的PostgresSQL实例:
pig = quickpiggy.Piggy(volatile=True, create_db='somedb')
conn = psycopg2.connect(pig.dsnstring())