有什么可以替代从playhouse.test_utils的test_database()函数?

问题描述 投票:0回答:1

我想用自定义的SQLite数据库单元测试代码。这个问题的答案了question使用test_databaseplayhouse.test_utils

然而,这是目前尚未有可用的。

我能有取代它呢?

peewee
1个回答
1
投票

您可以使用Database.bind()Database.bind_ctx()方法,其记载:

http://docs.peewee-orm.com/en/latest/peewee/api.html#Database.bind_ctx

该文件涵盖了这个确切的方案:

MODELS = (User, Account, Note)

# Bind the given models to the db for the duration of wrapped block.
def use_test_database(fn):
    @wraps(fn)
    def inner(self):
        with test_db.bind_ctx(MODELS):
            test_db.create_tables(MODELS)
            try:
                fn(self)
            finally:
                test_db.drop_tables(MODELS)
    return inner


class TestSomething(TestCase):
    @use_test_database
    def test_something(self):
        # ... models are bound to test database ...
        pass
© www.soinside.com 2019 - 2024. All rights reserved.