在python,postgresql中进行数据库测试

问题描述 投票:6回答:4

你如何对使用postgresql的python DAL进行单元测试。

在sqlite中,您可以为每个测试创建内存数据库,但这不能用于postgresql。

我想要一个可用于设置数据库的库,并在测试完成后清理它。

我使用Sqlalchemy作为我的ORM。

python unit-testing postgresql sqlalchemy data-access-layer
4个回答
2
投票

您可以使用nose编写测试,然后使用SQLAlchemy在setup/teardown方法中创建和清理测试数据库。


7
投票

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将等待所有活动连接关闭。


4
投票

你试过testing.postgresql吗?


0
投票

还有QuickPiggy,它能够自行清理。来自文档:

可以很容易地获得临时PostgresQL实例:

pig = quickpiggy.Piggy(volatile = True,create_db ='somedb')

conn = psycopg2.connect(pig.dsnstring())

© www.soinside.com 2019 - 2024. All rights reserved.