По умолчанию, когда Django работает с бэкэндом sqlite, он создает новую базу данных в памяти для теста. Это означает, что для каждого класса, производного от unittest.TestCase, я получаю новую базу данных. Можно ли это изменить, чтобы он очищался перед запуском каждого метода тестирования?
Пример: я тестирую класс менеджера, который обеспечивает дополнительную абстракцию поверх постоянных объектов Django. Код выглядит более-менее так
class TestForManager(unittest.TestCase):
def testAddingBlah(self):
manager = Manager()
self.assertEquals(manager.getBlahs(), 0)
manager.addBlah(...)
self.assertEquals(manager.getBlahs(), 1)
def testAddingBlahInDifferentWay(self):
manager = Manager()
self.assertEquals(manager.getBlahs(), 0)
manager.addBlahInDifferentWay(...)
self.assertEquals(manager.getBlahs(), 1)
Теперь первое утверждение второго теста завершается ошибкой, поскольку состояние базы данных сохраняется между вызовами теста, и в базе уже есть экземпляр Blah
.