Я столкнулся со странной ситуацией. Я пишу несколько тестов для моей программы. Программа написана для работы на sqllite или postgresqul в зависимости от предпочтений. Сейчас я пишу свой тестовый код, используя unittest. Очень в основном то, что я делаю:
def setUp(self):
"""
Reset the database before each test.
"""
if os.path.exists(root_storage):
shutil.rmtree(root_storage)
reset_database()
initialize_startup()
self.project_service = ProjectService()
self.structure_helper = FilesHelper()
user = model.User("test_user", "test_pass", "test_mail@tvb.org",
True, "user")
self.test_user = dao.store_entity(user)
В настройках я удаляю все существующие папки (созданные некоторыми тестами), затем сбрасываю свою базу данных (в основном каскад сбрасываемых таблиц), затем снова инициализирую базу данных и создаю некоторые службы, которые будут использоваться для тестирования.
def tearDown(self):
"""
Remove project folders and clean up database.
"""
created_projects = dao.get_projects_for_user(self.test_user.id)
for project in created_projects:
self.structure_helper.remove_project_structure(project.name)
reset_database()
Tear down делает то же самое, кроме создания сервисов, потому что этот тестовый модуль является частью того же пакета с другими модулями, и я не хочу, чтобы некоторые тесты оставляли после себя вещи.
Теперь все мои тесты работают нормально с sqllite. С postgresql я сталкиваюсь с очень странной ситуацией: в какой-то момент выполнения, который фактически отличается от запуска к запуску с небольшим запасом (например, один или два дополнительных вызова), программа просто останавливается. Я имею в виду, что ошибка не генерируется, исключение не выдается, программа просто останавливается.
Теперь единственное, о чем я могу думать, так это о том, что каким-то образом я забываю, что где-то открылось соединение, и после того, как оно истекло, и что-то происходит. Но у меня МНОГО соединений, поэтому прежде чем я начну изучать весь этот код, я был бы признателен за некоторые предложения / мнения.
Что может быть причиной такого поведения? С чего начать искать?
С уважением,
Богдан