Быстрый стол отдыха

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

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 ответ

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

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

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

Другие вопросы по тегам