Django 1.5關於測試的文檔說:Django測試。運行測試時從生產數據庫中查找數據?
在運行測試時從生產數據庫中查找數據?
如果您的代碼在其模塊編譯爲時試圖訪問數據庫,則會在設置測試數據庫之前發生,並且可能會有意外的結果。例如,如果模塊級代碼中存在數據庫查詢且存在真實數據庫,則生產數據可能會污染您的測試。無論如何,在代碼中有這樣的導入時間數據庫查詢是一個糟糕的主意 - 重寫您的代碼,以便它不這樣做。
有人可以解釋我無法理解的粗體文本。謝謝。
Django 1.5關於測試的文檔說:Django測試。運行測試時從生產數據庫中查找數據?
在運行測試時從生產數據庫中查找數據?
如果您的代碼在其模塊編譯爲時試圖訪問數據庫,則會在設置測試數據庫之前發生,並且可能會有意外的結果。例如,如果模塊級代碼中存在數據庫查詢且存在真實數據庫,則生產數據可能會污染您的測試。無論如何,在代碼中有這樣的導入時間數據庫查詢是一個糟糕的主意 - 重寫您的代碼,以便它不這樣做。
有人可以解釋我無法理解的粗體文本。謝謝。
你正在讀這篇文章:http://djbook.ru/rel1.5/topics/testing/overview.html
這看起來像的,可能含有尷尬通道的在線協作的書籍之一。
首先,你的設置文件建立一個數據庫:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myDB' ...
當你運行測試,測試運行器讀取該名稱,預先考慮「TEST_」獲得「test_myDB」,併爲測試一個空數據庫和玩。
但是測試運行器只有在模塊被加載(不是「編譯」)之後才能做到這一點。所以......
from django.test import TestCase
# Don't use the database here; it's still myDB
class SimpleTest(TestCase):
def setUp(self):
# We are all about the test_myDB database, here
self.user = User.objects.create_user(
username='zaphod',
email='[email protected]',
password='beeblebrox',
)
另一個細節:除非你是瘋了,並deving,並直接在生產服務器上進行測試,MYDB是不是「生產數據庫」。一個更好的名字是「開發數據庫」。
你是對的;也可以通過「生產」來實現,它們也可能意味着「暫存」。 – Ric
除非你瘋了,並且正在你的登臺服務器上直接進行測試和測試,myDB也不是「臨時數據庫」...... C-; – Phlip
我的意思是您可以在您的開發服務器上進行開發和測試,然後您可以將其部署到登臺服務器上並再次運行測試,以確保在將該環境部署到生產服務器之前,該環境中的所有環境仍能正常工作。 – Ric