2015-03-12 3 views
0

Я хочу пустую базу данных для каждого теста, чтобы каждый раз воссоздавать базу данных. Это очень медленно. Есть ли более быстрый способ?Быстрое размещение стола

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

Вы можете запускать свои тесты в транзакции и откаты после каждого теста, сохраняя дорогостоящее создание таблицы. Тем не менее, если вы используете txn в тестовом режиме, вам придется вручную удалять вещи.

Вы можете ввести test_database контекст во время выполнения метода setUp() на TestCase, а затем вызвать __exit__ во tearDown().

Короче говоря, существует множество способов, вам просто нужно думать вне коробки.