По умолчанию, когда 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
.