使用sqlite for django時,您可以從源代碼管理中檢出應用程序,並運行單元測試,而無需執行任何特殊操作。但是當你切換到使用mysql作爲你的數據庫時,突然你需要創建一個數據庫。爲什麼我需要這樣做?這是特別奇怪的,因爲單元測試甚至不會使用該數據庫,它們將通過在'test_'前面添加名稱來創建它們自己的。爲什麼Django要求我創建一個mysql數據庫來運行測試?
回答
這是因爲Django加載settings.py文件來運行測試套件。您可以創建一個單獨的settings.py文件,並在運行測試時使用它。以django網站爲例:
--settings=test_sqlite
假設您有一個名爲test_sqlite的settings.py文件。
去這裏的更多信息:
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/
如果您運行測試經常把下面的代碼在你的settings.py:
import sys
if 'test' in sys.argv:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'test'
}
}
仍然沒有解決這個問題,因爲它測試的不是我們部署的sqlite,所以不是一個很好的測試。但是如果它不存在,則可以使用settings.py或manage.py來創建數據庫。 – guidoism 2012-02-27 17:30:50
沒關係。如果您使用的是純粹的django,則數據庫後端可以更改,並且您的網站應該可以正常工作。 – santiagobasulto 2012-03-03 13:13:36
SQlite比單元測試MySQL的速度快一百倍。 – sbaechler 2012-03-05 12:49:54
我使用幾乎相同的解決方案用於測試,像@SimonBächler,而不是真實的數據庫
'NAME': 'test',
我用
'NAME':' :memory:,
所以它使用的內存來處理測試操作,而這就是爲什麼它並不總是創建/更新/刪除數據庫。
- 1. Django測試 - 我只想要創建一個我的數據庫 - 如何指定
- 2. 爲什麼導入django設置兩次,運行單元測試時創建兩次測試數據庫?
- 3. 我可以爲django測試建立一個數據庫嗎?
- 4. 爲什麼每次運行測試時都會創建數據庫?
- 5. Django單元測試無需每次運行時創建測試數據庫
- 6. 如何爲每個測試運行重新創建一個數據庫?
- 7. Django測試數據庫在測試運行時看起來爲空
- 8. Django避免創建一個測試數據庫
- 9. 爲什麼Django在測試期間不創建空白數據庫?
- 10. 爲什麼我無法爲我的django項目創建自己的測試數據庫?
- 11. 爲什麼我需要Django來創建一個簡單的Hello World?
- 12. 創建測試數據庫Django的單元測試
- 13. 爲什麼EF試圖創建一個數據庫時,我已經做到了
- 14. 爲什麼我需要'新'來創建一個對象?
- 15. 爲什麼我需要一個連接來創建PreparedStatements?
- 16. 如何自動爲Django測試創建postgis數據庫?
- 17. 使用JOOQ創建一個數據庫進行測試
- 18. 爲什麼Selenium只運行我的測試套件中的第一個測試?
- 19. 在運行測試之前在Django中創建數據庫條目
- 20. 使用Django進行測試:停留在創建測試數據庫
- 21. 如何創建一個新的數據庫測試運行之前?
- 22. 從數據集創建表來運行Chisq測試
- 23. 我需要什麼樣的問題來請求數據庫同步而不進行測試?
- 24. 單元測試運行.sql腳本到SQL創建數據庫
- 25. 創建一個新的Maven目標來運行測試茉莉
- 26. MySQL用戶創建數據庫需要什麼權限?
- 27. 試圖用Nhibernate創建MySql數據庫 - 需要一些方向
- 28. 我需要什麼來保持安全的MySQL數據庫?
- 29. Django測試。運行測試時從生產數據庫中查找數據?
- 30. 爲什麼聲納(JaCoCo)要求我測試我的軟件包?
我有一個單獨的設置文件,我仍然希望使用mysql而不是sqlite進行測試,因爲數據庫足夠不同,我想測試我正在部署的數據庫引擎。 – guidoism 2012-02-24 23:00:07
您需要爲使用mysql和postgres創建一個數據庫。在sqllite中,當你去連接數據庫,連接('數據庫'),如果它不存在,它會被創建。在單元測試期間,他們將在數據庫中創建自己的表格,一旦完成單元測試就應該拆除表格。 – 2012-02-24 23:06:45
是的,我明白了,但問題是:爲什麼? – guidoism 2012-02-24 23:11:14