Python中的PostgreSQL数据库测试

9 投票
4 回答
9445 浏览
提问于 2025-04-15 22:05

你是怎么对使用PostgreSQL的Python数据访问层(DAL)进行单元测试的呢?

在使用SQLite时,你可以为每个测试创建一个内存数据库,但在PostgreSQL中是做不到的。

我想找一个库,可以用来设置数据库,并在测试完成后清理它。

我正在使用Sqlalchemy作为我的对象关系映射工具(ORM)。

4 个回答

6

你试过 testing.postgresql 吗?

10

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 会等到所有活跃的连接都关闭后再进行操作。

2

你可以使用nose来编写你的测试,然后只需要用SQLAlchemy来创建和清理测试数据库,这些操作可以放在你的设置/清理方法里。

撰写回答