快餐桌休闲

时间:2015-03-12 15:51:47

标签: unit-testing automated-tests peewee

我希望每个测试都有一个空数据库,所以每次都要重新创建数据库。这真的很慢。有更快的方法吗?

my_dbmodule.DATABASE = ':memory:
my_dbmodule.db = SqliteDatabase(':memory:')
my_dbmodule.db.connect()

my_dbmodule.db.drop_tables([DashboardConfig, MUT, Heartbeat,
                              Iteration, Log, Row,
                              DashboardConfigMUT], True)

my_dbmodule.db.create_tables([DashboardConfig, MUT, Heartbeat,
                                Iteration, Log, Row,
                                DashboardConfigMUT], True)

我唯一想到的是with语法

with test_database(test_db, (MUT, Iteration)):
    do_something()

这对我来说代码开销很大,因为每次测试都需要它。

如果有任何影响,我会使用from unittest import TestCase进行测试。

1 个答案:

答案 0 :(得分:0)

您可以在事务中运行测试并在每个测试用例后回滚,从而节省了昂贵的表创建。如果你在测试用例中使用txn,你当然不得不手动删除。

您可以在test_database上的setUp()方法中输入TestCase上下文,然后在__exit__期间致电tearDown()

简而言之,有很多方法,你只需要在框外思考。