我正在构建一个构建在SQLAlchemy顶部的Pyramid Web应用程序,并且只依赖PostgreSQL作为其数据库后端。
有什么方法可以让单元测试结构
为了加快测试速度,数据库事务将在teardown()
或测试套件的其他清理钩子上回滚
可以使用加速测试的其他技巧,例如:如果SQLAlchemy和PostgreSQL有任何对应的SQLite的:in:memory:
数据库
如果标准库unittest框架之外的特定功能可以更轻松地编写测试用例,则可以选择自定义测试运行程序la py.test
。
答案 0 :(得分:1)
对于测试,您可以在RAMdisk上初始化PostgreSQL数据目录(您可以在/dev/shm/
下创建一个目录,该目录在现代Linux发行版中以tmpfs
挂载)。您可以在非标准端口上运行Postgres。
PGTEMP=`mktemp -d /dev/shm/pgtemp.XXXXXX`
initdb -D "$PGTEMP"
postgres -D "$PGTEMP" -k "$PGTEMP" -p 54321
答案 1 :(得分:1)
由于此问题与您的other question有点类似,我将在此处复制相关部分:
所有测试用例类都应该从基类继承,该基类定义了一个常见的tearDown方法:
class BaseTest(unittest.TestCase):
def setUp(self):
# This makes things nicer if the previous test fails
# - without this all subsequent tests fail
self.tearDown()
self.config = testing.setUp()
def tearDown(self):
testing.tearDown()
session.expunge_all()
session.rollback()