运行Django单元测试远太慢。特别是当我只想运行一个测试时,测试运行器想要创建整个数据库并为了那个测试而销毁整个数据库。
如果我没有更改任何模型,如果Django不打算尝试创建和销毁整个数据库,我可以节省大量时间,而是保存下次。更好的是,如果测试运行器能够查看哪些模型已更改并且仅在运行测试之前替换那些模型,那将会很棒。
我宁愿不必自己将测试运行器子类化,但如果我很快找不到解决方案,那就是我要做的事情。有这样的东西已经存在吗?
答案 0 :(得分:13)
在django1.8中为manage.py test
命令--keepdb
./manage.py test --keepdb
答案 1 :(得分:6)
django-test-utils提供持久数据库测试运行器功能, http://django-test-utils.readthedocs.org/en/latest/keep_database_runner.html
答案 2 :(得分:4)
您是否尝试过使用内存中的SQLite数据库进行测试?它比使用基于磁盘的数据库快得多。
答案 3 :(得分:1)
我正在使用Djang-nose。如果设置env var REUSE_DB = 1,则在运行测试后不会销毁数据库,并在下次运行时重新使用相同的数据库。每当您的架构发生变化时,只需设置REUSE_DB = 0并执行一次完整的'跑。之后将其重置为1并且你很高兴。