【发布时间】:2014-07-30 11:56:45
【问题描述】:
我遇到了一个奇怪的情况。我正在为我的程序编写一些测试用例。该程序被编写为在 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 我遇到了一个非常奇怪的情况:在执行的某个时刻,实际上与运行之间的差异很小(例如一两个额外的调用),程序只是停止了。我的意思是没有产生错误,没有抛出异常,程序只是停止。
现在我唯一能想到的是,不知何故我忘记了某处打开的连接,并且在我超时并且发生了一些事情之后。但是我有很多联系,所以在我开始研究所有代码之前,我会很感激一些建议/意见。
什么可能导致这种行为?从哪里开始寻找?
问候, 波格丹
【问题讨论】:
标签: python sqlalchemy