Django 测试冻结在数据库创建
Posted
技术标签:
【中文标题】Django 测试冻结在数据库创建【英文标题】:Django test freeze at database creation 【发布时间】:2012-05-20 08:30:45 【问题描述】:这是我第一次尝试使用 Django 进行单元测试,但进展并不顺利...
我有一些很奇怪的东西。当我使用以下命令启动测试时:./manage.py test,命令行冻结在“为别名'default'创建测试数据库......”。我已经等了 10 分钟,什么都没有……无法取消 (CTRL+C) 这件事。我必须关闭 shell 并重新开始。
如果我“运行服务器”应用程序,一切正常。我看到它正在使用所有表创建一个名为“test_”的数据库,但之后立即停止,没有提示任何错误或其他什么。
有人知道这一切吗?
【问题讨论】:
更多代码或上下文会有所帮助 什么数据库引擎?您是否尝试过测试整个套件或一个单独的应用程序?您是否为测试启用了南? 数据库是 mysql。我试图调用一个单独的应用程序(swingtime,它应该有很好的测试)。南已启用。有没有办法在测试模式下禁用它? 如果我从已安装的应用程序中删除 South,它可以工作!但我正在使用 South 进行迁移。有没有办法在 settings.py 中知道我们是否处于测试模式?如果是这样,我可以移除南。 【参考方案1】:终于成功了!
问题来自南方。如果 South 在 INSTALLED_APPS 中,没有设置“SOUTH_TESTS_MIGRATE = False”,它会在创建测试数据库时冻结。也许只是执行时间太长,但我已经等了超过 15 分钟,它仍然冻结。
以下是关于此的文档: http://south.aeracode.org/docs/settings.html#south-tests-migrate
【讨论】:
目前这让我很生气,我什至根本没有使用 South。 :| 对我来说,是我的Mysql
服务器在运行,在重新启动 Mysql 时它工作正常。以上是关于Django 测试冻结在数据库创建的主要内容,如果未能解决你的问题,请参考以下文章
django 测试中的模拟时间问题:使用 freezegun 似乎没有冻结时间
如何在 django 中修复冻结的 cv2.imshow(来自 opencv)
为啥 django SimpleTestCase 创建测试数据库