回答
您可以使用IPDB:
pip install ipdb
然後在測試功能放在一個破發點:
import ipdb; ipdb.set_trace()
運行測試時,你可以訪問所有你會有一個交互的shell值與您在代碼中使用的方式相同Model.object.....
只使用'./manage.py shell'有什麼區別? – Risadinha
當您使用「manage.py test」測試您的代碼時Django創建測試數據庫並在測試結束時將其銷燬=>您無法使用shell訪問它。 – user2021091
如果您需要測試中的數據,則應爲其創建fixtures。最好的方法是使用./manage.py dumpdata --help
。
將輸出存儲在項目樹中以便能夠從測試中加載它。您可以使用像FIXTURES_DIR
這樣的設置,但這不是必需的。您還可以將夾具文件存儲在他們所屬的測試附近。
我的經歷讓我創建了幾個只包含某些模型的小夾具文件。例如,我有一個小夾具文件,其中只包含我在測試中需要的一些用戶。該夾具在需要認證的任何地方加載。當然,包含與用戶對象相關數據的所有其他燈具都需要更改爲這些測試用戶,或者需要將相關用戶添加到燈具。您將不得不嘗試四處修復您的夾具數據,以使其完成測試。您很可能不希望將所有生產數據都作爲測試裝置。
在你測試你指定這樣的燈具:
from django.test import TestCase
class SomeTest(TestCase):
USER_DICT = {
'username': 'django-test',
'password': 'XXX'
}
fixtures = [
# fixture for django-test and other users
os.path.join(settings.FIXTURE_DIR, 'auth_fixture.json'),
# core models for some app
os.path.join(settings.FIXTURE_DIR, 'core.json'),
]
def test_one(self):
# uses clean fixtures
# modify, delete or add data
pass
def test_two(self):
# uses clean fixtures
# the changes of test_one have been reset
pass
這會自動加載燈具爲每個測試。您可以在一次測試(單一測試方法)期間修改,刪除和添加數據,並且所有數據都將重置爲下一次測試的原始數據(下一個方法)。
是的!
這是一個好主意嗎?希望有更簡單和更安全的方法來實現你的目標。
默認情況下,django測試運行器creates a database前加test_
,部分是爲了防止您的數據庫意外執行破壞性測試!
因爲django的模型與測試運行器集成測試緊密集成(編寫與數據庫實際交互的測試非常快)。這主要是因爲每個測試都是在一個事務中執行的,並且在測試拆卸期間,事務被回滾。由於測試速度如此之快,因此慣例是根據需要在每個測試中創建測試數據(固件),而不是依賴全局數據庫狀態。這也會讓您的測試更加孤立和專注。
當然,在很多情況下,您可能想測試生產。要做到這一點,您可以使用常規測試運行器(unittest.TestCase
,因此不會出現測試數據庫),然後直接導入模型並查詢數據庫。
但是,如果您的意圖是「我想檢查我的測試中有多少行在我的已填充表中,因爲我解析了一個csv來填充數據庫」。那麼爲什麼你不能創建一個Django的單元測試,在那裏你有一個虛假的CSV,執行代碼解析/加載它,然後在你的測試用例的上下文中查詢你的數據庫?它在django測試用例的上下文中提供了很多保護和速度。
如果您最終創建了某種直接查詢數據庫的功能/自動化測試,那麼創建READ ONLY數據庫用戶可能是一個好主意。
- 1. Django模型訪問
- 2. 內部測試模型 - Django 1.7問題
- 3. 測試Django時訪問request.user對象
- 4. 從驗收測試訪問模型
- 5. Django模型關係測試
- 6. Django模型單元測試
- 7. django模型單元測試
- 8. Django:測試抽象模型
- 9. Django測試模型屬性
- 10. 從Django測試中訪問Django testserver
- 11. 訪問Django的模型
- 12. Django:訪問模型屬性
- 13. Cron Job訪問django模型
- 14. 訪問的Django模型
- 15. 在django測試客戶端訪問raw_post_data
- 16. 在Django中測試特定模型
- 17. 測試在Django模型「類元」
- 18. 訪問模型場admin.ModelAdmin在Django
- 19. 在Django中訪問模型變量
- 20. 在Django中訪問相關模型?
- 21. 訪問模型字段屬性在Django
- 22. 在Django 1.9中訪問模型緩存
- 23. 如何在使用Django測試URL時模擬數據庫訪問
- 24. django訪問本地測試網址
- 25. 在CakePHP控制器測試中訪問模型
- 26. 在驗收測試中訪問後獲取路由模型
- 27. Django模型:父模型訪問子模型場
- 28. 使用FileField測試Django模型
- 29. 測試的Django模型清潔方法
- 30. Django - 測試模型字段更改
您是指當前模型的值?你爲什麼想這樣做? –
您可以從應用程序對象中獲取模型。 –
我該怎麼做?我如何啓動應用程序對象?我想檢查一下我的測試中有多少行在我的已填充表中,因爲我解析了一個csv來填充數據庫。這就是爲什麼我訪問 – ddomingo