Я столкнулся со странной ситуацией. Я пишу несколько тестовых примеров для своей программы. Программа написана для работы на 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)
В setUp я удаляю все существующие папки (созданные некоторыми тестами), затем я сбросить мою базу данных (в основном отбрасывать таблицы каскадом), затем я снова инициализирую базу данных и создаю некоторые службы, которые будут использоваться для тестирования.
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 я столкнулся с очень странной ситуацией: в какой-то момент выполнения, которое на самом деле отличается от запуска к запуску с небольшим запасом (например, один или два дополнительных вызова), программа просто останавливается. Я имею в виду, что не генерируется ни одна ошибка, не генерируется исключение, программа просто останавливается.
Теперь я могу думать только о том, что каким-то образом я забываю, что где-то открылось соединение, и после того, как я истекло время ожидания, что-то произошло. Но у меня МНОГО связей, поэтому, прежде чем я начну изучать весь этот код, я был бы признателен за некоторые предложения / мнения.
Что может вызвать такое поведение? С чего начать?
С уважением, Богдан