Быстрый стол отдыха
Я хочу пустую базу данных для каждого теста, поэтому я воссоздаю базу данных каждый раз. Это действительно медленно. Есть ли более быстрый способ?
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()
,
Короче говоря, есть много способов, вам просто нужно мыслить нестандартно.