2010-06-28 80 views
14

運行Django單元測試是遠遠太慢了。特別是當我只想運行一個測試,但測試運行人員想要創建整個數據庫並摧毀整個測試時。如何告訴Django保存我的測試數據庫?

如果我沒有改變任何模型,我可以節省時間,如果Django不打算嘗試創建和銷燬整個數據庫,而是保存下一次。更好的是,如果測試運行人員能夠看到哪些模型發生了變化,並且只能在運行測試之前替換那些模型,那就太棒了。

我寧願不必親自試用跑步者,但如果我很快找不到解決方案,那就是我必須要做的。有沒有這樣的東西已經存在?

回答

8

在django1.8增加了新的參數manage.py test命令--keepdb

./manage.py test --keepdb 
4

您是否嘗試過使用內存中的SQLite數據庫進行測試?它比使用基於磁盤的數據庫快得多。

+0

我最後一次嘗試,spatialite是不是我用的是Ubuntu的任何版本的播放好聽,所以我很快就放棄了那。但我現在應該再試一次。 – 2010-06-28 04:57:06

+3

我認爲有必要在同一個數據庫上運行測試,因爲您在每次提交之前至少在現場使用測試(如果不是總是如此)。 – 2010-07-01 13:14:50

+0

注意:SQLite3目前不能工作多線程,所以如果你有任何(集成)測試依賴於/測試對數據庫的併發訪問,他們會感到悲傷。 – JohnJ 2013-07-29 19:04:28

1

我使用Djang鼻子。如果你設置一個env var REUSE_DB = 1,那麼在運行測試之後它不會銷燬數據庫,並在下一次運行時重新使用同一個數據庫。只要您的模式發生變化,只需設置REUSE_DB = 0並執行一次「完整」運行。之後,重置爲1,你很好去。

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