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 测试期间数据库创建失败

为啥 django SimpleTestCase 创建测试数据库

Django:在运行单元测试之前创建测试表时“无法添加外键约束”

创建测试数据库时出错 - django、docker、mysql