回答
複製數據庫或導致問題的數據庫的一部分是否可行?如果您保留了一臺備份服務器,您可能可以從那裏複製數據(確保您有另一個備份,以防備份數據庫)。
基本上,你不想混淆實時數據,並且你不想留下沒有備份的情況,以免你把事情搞砸(你會的!)。
Django有一種方法可以告訴測試運行者複製生產數據庫而不是創建一個空的數據庫嗎? – 2011-07-07 12:42:35
複製數據庫...這真是一個很好的做法!
只需執行測試,而不是調用commit,在最後調用回滾。
首先要嘗試的應該是在生產服務器上的shell上手動執行測試代碼。
python manage.py shell
如果不工作,你可能需要傾倒生產數據,本地複製它,並把它作爲你正在使用的測試用例的常客。
如果有一種方法可以讓django使用標準數據庫而不需要創建一個新的標準數據庫,我認爲不是創建一個夾具,而是創建一個sqldump,它通常是一個更小的文件。
簡答:你沒有。
龍答:你沒有,你使生產數據庫的副本,並運行它有
如果你真的不關心搗毀分貝,然後滾動的馬可的答案回交易是我的也是首選。你也可以嘗試NdbUnit,但我個人認爲它帶來的額外負擔是值得的。
你現在如何測試測試數據庫?通過測試分貝你的意思是SQLite?
HTH,
Berryl
使用manage.py dumpdata > mydata.json
從數據庫獲取數據的副本。
轉到您的本地機器,將mydata.json
複製到您應用的子目錄fixtures
myapp/fixtures/mydata.json
做:
manage.py syncdb # Set up an empty database
manage.py loaddata mydata.json
本地數據庫將數據填充,你可以測試了。
我有一個完整的緩慢的django測試數據庫套件和一個瘋狂的快速運行反生產測試套件從一個共同的測試模塊構建。我使用生產套件在開發過程中檢查我的更改,並將其作爲我開發計算機上的提交驗證步驟。Django的套件模塊如下所示:
import django.test
import my_test_module
...
class MyTests(django.test.TestCase):
def test_XXX(self):
my_test_module.XXX(self)
生產測試套件模塊採用裸單元測試,看起來像這樣:
import unittest
import my_test_module
class MyTests(unittest.TestCase):
def test_XXX(self):
my_test_module.XXX(self)
suite = unittest.TestLoader().loadTestsFromTestCase(MyTests)
unittest.TextTestRunner(verbosity=2).run(suite)
測試模塊如下:
def XXX(testcase):
testcase.assertEquals('foo', 'bar')
我像這樣運行裸單元測試版本,所以我的測試在任何情況下都可以使用django ORM:
% python manage.py shell < run_unit_tests
其中run_unit_tests包括:
import path.to.production_module
生產模塊需要一個稍微不同的設置()和tearDown()從Django的版本,你可以把任何所需的表清理在那裏。我還通過模擬測試客戶端類使用Django的測試客戶端共同測試模塊:
class FakeDict(dict):
"""
class that wraps dict and provides a getlist member
used by the django view request unpacking code, used when
passing in a FakeRequest (see below), only needed for those
api entrypoints that have list parameters
"""
def getlist(self, name):
return [x for x in self.get(name)]
class FakeRequest(object):
"""
an object mimicing the django request object passed in to views
so we can test the api entrypoints from the developer unit test
framework
"""
user = get_test_user()
GET={}
POST={}
這是一個測試模塊功能的一個例子是通過客戶端測試:
def XXX(testcase):
if getattr(testcase, 'client', None) is None:
req_dict = FakeDict()
else:
req_dict = {}
req_dict['param'] = 'value'
if getattr(testcase, 'client', None) is None:
fake_req = FakeRequest()
fake_req.POST = req_dict
resp = view_function_to_test(fake_req)
else:
resp = testcase.client.post('/path/to/function_to_test/', req_dict)
...
我已經發現這種結構運行得非常好,該套件的超快速生產版本是一個重要的節省時間。
如果您的數據庫支持模板數據庫,請將生產數據庫用作模板數據庫。確保您的Django數據庫用戶具有足夠的權限。
如果您使用PostgreSQL,您可以輕鬆地將生產數據庫的名稱指定爲POSTGIS_TEMPLATE
(並使用PostGIS後端)。
- 1. CI +測試:針對數據庫運行單元測試
- 2. 針對生產數據庫的Django單元測試查詢
- 3. 如何運行Spring Roo針對Tomcat的不同數據庫生成測試?
- 4. 如何對數據庫遷移進行單元測試?
- 5. 如何對數據庫訪問邏輯進行單元測試?
- 6. 如何對我的數據庫內容進行單元測試?
- 7. 將測試數據庫重建爲生產測試數據庫
- 8. 針對真實數據庫的單元測試域服務
- 9. 如何單元測試數據庫類
- 10. 針對測試數據庫運行Reporting Services
- 11. 單元測試數據庫
- 12. 單元測試數據庫
- 13. 如何在生產數據庫的副本上運行Django測試?
- 14. 未運行類庫(UWP)單元測試
- 15. 我是否應該針對SQLRepository運行單元測試?
- 16. 你對非生產代碼進行單元測試嗎?
- 17. 單元測試運行.sql腳本到SQL創建數據庫
- 18. 如何運行單元測試
- 19. Django單元測試無需每次運行時創建測試數據庫
- 20. 從測試數據庫更新生產數據庫的腳本
- 21. 如何在Visual Studio中執行單元測試後刪除測試數據庫
- 22. 單元測試,以防止生產
- 23. MSBuild運行單元測試
- 24. Phabricator:運行單元測試
- 25. SuperNotCalledException運行單元測試
- 26. 如何對數據提取方法進行單元測試
- 27. 如何根據Active Directory對NextPasswordChangeDate函數進行單元測試
- 28. 如何在開發,測試和生產中管理數據庫?
- 29. XNA項目單元測試,生成但運行測試錯誤
- 30. 如何對wxPython進行單元測試?
第一個明顯的問題是:你能得到一個數據庫的副本嗎? – 2010-04-07 00:06:13
我會嘗試首先複製所有數據庫環境,即相同的數據庫軟件,相同的版本,相同的設置,相同的數據。使您的開發數據庫與生產數據庫真正相同。 – 2010-04-07 08:21:16
你沒有。單元測試不會與數據庫交談。 – 2010-04-09 19:40:40