我希望每个测试都有一个空数据库,所以每次都要重新创建数据库。这真的很慢。有更快的方法吗?
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
进行测试。
答案 0 :(得分:0)
您可以在事务中运行测试并在每个测试用例后回滚,从而节省了昂贵的表创建。如果你在测试用例中使用txn,你当然不得不手动删除。
您可以在test_database
上的setUp()
方法中输入TestCase
上下文,然后在__exit__
期间致电tearDown()
。
简而言之,有很多方法,你只需要在框外思考。