16

运行 Django 单元测试太慢了。尤其是当我只想运行一个测试但测试运行器想要创建整个数据库并仅为该测试而破坏整个事物时。

在我没有更改任何模型的情况下,如果 Django 不费心尝试创建和销毁整个数据库,而是将其保存以备下次使用,我可以节省大量时间。更好的是,如果测试运行者能够看到哪些模型发生了变化并且只在运行测试之前替换那些模型,那就太好了。

我宁愿不必自己对测试运行程序进行子类化,但如果我不能很快找到解决方案,我将不得不这样做。有没有这样的东西已经存在?

4

3 回答 3

19

manage.py test在 django1.8 中为命令--keepdb添加了新参数

./manage.py test --keepdb
于 2015-12-25T13:13:24.590 回答
4

您是否尝试过使用内存中的 SQLite 数据库进行测试?它比使用基于磁盘的数据库快得多。

于 2010-06-28T02:54:52.210 回答
1

我正在使用 Djang-nose。如果您设置环境变量 REUSE_DB=1,它不会在运行测试后破坏数据库,并在下次运行时重新使用同一个数据库。每当您的架构更改时,只需设置 REUSE_DB=0 并执行一次“完整”运行。之后将其重置为 1,您就可以开始了。

https://github.com/django-nose/django-nose

于 2015-03-06T15:26:18.793 回答