2009-03-05 97 views
7

当我为我的django应用程序开发单元测试时,发现自己一遍又一遍地运行manage.py测试。我使用的是MySQL后端,并且在项目中有很多模型,因此创建所有测试数据库的时间大约为30秒。如何更快地运行django单元测试(通过manage.py)

如何通过保持创建数据库表并仅清除“manage.py test”命令之间的所有记录之间的所有记录来使每个单元测试更快?

回答

7

注你不必每次都运行整个测试套件。您只需运行manage.py test appname(或与manage.py test app1 app2 ...一起运行多个应用程序),即可运行单个应用程序的测试套件。

我通常的工作流程是针对我正在工作的应用程序运行测试,并在提交下一组更改前运行完整套件。

+0

然而,它仍然为INSTALLED_APPS中的每个模块创建数据库,这是需要更多时间的。 – Bryce 2013-09-17 05:37:14

1

我为我的MySQL数据库使用RAM磁盘,很快甚至没有描述它,只有在您正在使用的特定应用程序中测试特定测试,才能显着缩短测试时间。有一些脚本可以自动为您的数据库创建虚拟硬盘,我使用mysql-ramdisk.py这是我的一位同事制作的,这个版本适用于Mac OS X.还有一个适用于Linux的版本here。我花了大约30秒来为django dev设置整个事情,并且我的测试有时会在5秒内运行,包括创建默认测试数据库。 ;)

0

由于在此主题中发布:How do I run a unit test against the production database?,我创建了一个可以针对生产数据库(在本地开发机器上,通过“manage.py shell”)或常规django“管理”运行的测试套件。 py测试“测试套件。对于我来说,在开发过程中快速进行健全性检查和提交时间验证已经非常节省时间。在任何一种情况下,我都运行相同的数据库(MySQL),并在我的测试中获得django ORM。

相关问题