龙卷风。类似Django的testrunner和测试数据库

时间:2012-05-25 13:01:36

标签: python django unit-testing tornado

我喜欢django单元测试,因为他们在运行时创建并删除测试数据库。

为龙卷风创建测试数据库有哪些方法?

UPD:我对在测试运行中创建postgresql测试数据库感兴趣。

1 个答案:

答案 0 :(得分:5)

我发现最简单的方法就是为测试数据库使用SQL转储。创建一个数据库,用fixtures填充它,然后将其写入文件。只需在运行测试之前调用load_fixtures(或者只要您想重置数据库)。这种方法当然可以改进,但它足以满足我的需求。

import os
import unittest2

import tornado.database

settings = dict(
    db_host="127.0.0.1:3306",
    db_name="testdb",
    db_user="testdb",
    db_password="secret",
    db_fixtures_file=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'fixtures.sql'),
)

def load_fixtures():
    """Fixtures are stored in an SQL dump.
    """
    os.system("psql %s --user=%s --password=%s < %s" % (settings['db_name'], 
        settings['db_user'], settings['db_password'], settings['db_fixtures_file']))

    return tornado.database.Connection(
        host=settings['db_host'], database=settings['db_name'],
        user=settings['db_user'], password=settings['db_password'])