我的一些单元测试仅 mysql 就需要 10-15 秒来创建表。这似乎不必要地长。它必须创建大约 50 个表,但每秒仍然只有 3 个表。当一遍又一遍地运行单元测试时,这是一个很大的烦恼。
作为解决方法,我一直在 sqlite3 中运行单元测试。它速度极快,但我更喜欢在 MySQL 上运行测试,因为我的实时服务器就是在 MySQL 上运行的。
为了说明速度差异,请创建一个新项目。然后使用 mysql 对其运行syncdb。然后使用 sqlite3 尝试一下。
[~/testproject] ./manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
对我来说,在 MySQL 中创建上述表大约需要 2 秒。 Sqlite3 几乎是即时的。
我在我的开发机器上运行 mysql。这是我的my.cnf.
请提出您能想到的任何可能有助于加快 MySQL 表创建时间的提示或调整。
您可以创建 RAM 磁盘并将数据库移动到那里,仅用于单元测试。
如果您为此编写脚本,那么它是自动的并且非常方便。
另外,出于其他目的,我编写了加载数据库的自定义测试运行程序
从 sql 转储而不是创建它然后创建表。
你选。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)