【发布时间】:2011-12-31 03:26:07
【问题描述】:
我发现执行单元测试很慢,尤其是 Django 中的数据库操作。
它经历了创建数据库,表,夹具,然后测试,最后销毁它们的整个过程。
我什至花了将近半分钟的时间来完成所有这些事情。
在不考虑我的机器速度的情况下,有没有其他方法可以在 Django 中加速单元测试或任何加速技巧?
【问题讨论】:
-
既然你说运行测试需要大约 30 秒,我假设你已经在运行你的应用程序的测试(而不是整个 django 测试套件)。有了这个假设,要消除的瓶颈可能是 sqlite(这很慢)。我建议安装本地 postgres/mysql 服务器并改用它。
-
@OwenNelson:奇怪的是,SQLite 极大地提升了 Django 测试的速度。轻松将 45-50 秒的测试套件缩短到 7-10 秒
-
@OwenNelson,我正在使用 MySQL,不是在我的机器上,而是在 LAN 中的远程主机上。也许,在我的机器上移动数据库服务器会很好。谢谢提醒。
-
@Javier 听说 sqlite 对您来说更快,我很惊讶。一般来说,由于它是一个无服务器、基于磁盘的实现,因此在处理大量插入/更新/删除(对于大型固定装置集很自然)时,您会遇到磁盘/文件争用问题(等待锁定)。在您有固定数据的情况下,我经常发现实际的 RMDB 速度要快得多。 **我这么说是假设夹具数据足够大以至于不能在 :memory: 中运行 sqlite,当然。
标签: django performance unit-testing