我試圖做一個簡單的Django測試,使用Django App目錄下的tests.py文件(mysite/polls/tests.py),但每個一次,我跑「蟒蛇manage.py測試民意調查」,我得到的錯誤:Django測試錯誤「權限被拒絕創建數據庫」 - 使用Heroku Postgres
C:\Python27\python.exe "C:\Program Files (x86)\JetBrains\PyCharm 3.0\helpers\pycharm\django_test_manage.py" test polls "C:\Users\<myname>\PycharmProjects\mysite"
Testing started at 8:40 PM ...
Creating test database for alias 'default'...
Type 'yes' if you would like to try deleting the test database 'test_<database>', or 'no' to cancel: Got an error creating the test database: permission denied to create database
從我讀過的東西,顯然Heroku的PG使用一個共享的數據庫,所以我沒有創建權限/銷燬數據庫,這是測試所必需的。有沒有一個明顯的解決辦法呢?我仍在開發我的本地驅動器,所以任何解決方法將不勝感激。我知道測試是編程的一個重要部分,所以我希望能夠儘快實施測試方法。
我正在嘗試使用TestCase
django類。
我所用:
1)的Heroku Postgres的業餘愛好開發計劃
2)的Postgres 9.3.3
3)的Python 2.7.6
4)的Django 1.6.1
編輯: 因此,在做了更多研究之後,我發現我可以重寫settings.py中的DATABASES
dict變量以使用SQLite在本地進行測試(當'test'是shell中的參數時),但我仍然更喜歡PostgreSQL實現,因爲從我讀的內容來看,PostgreSQL更爲嚴格(我很喜歡)。
任何有興趣在半解決方案,我發現(#1的另一成員提供):
if 'test' in sys.argv:
DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'}
不要忘了導入sys
。
Django的測試獨立運行,所以每個測試建立一個新的數據庫,運行測試,然後刪除該數據庫,以確保當您執行計數或加入等操作時不會發生交叉談話。 – Soviut