我正在運行一些需要手動調試的unittests。 在這些測試中,沒有任何東西會寫入數據庫。在django unittests期間,數據庫保持爲空
有什麼辦法強制Django(或pytest?)在執行時直接提交更改,以便我可以在打斷點時真正看到數據庫中有什麼?
my_object = SomeDefaultDjangoModel()
my_object.some_random_text = 'Just adding some data'
my_object.save()
foo = 'bar' <= Hitting breakpoint here.
對我的數據庫執行手動SQL查詢返回0行。 我該如何做這項工作?
*更新*
的問題是,Django的不允許您更改保存到數據庫中,直到每個請求的結束,在大多數情況下不是問題。 但是,當您想繞過ORM並正在使用原始連接執行查詢時,它似乎爲此啓動了單獨的數據庫連接。由於所有事務都處於掛起狀態,直到請求結束,因此無法從其他數據庫連接訪問這些更改。這將返回無效結果,並使我的單元測試失敗。
我還沒有找到一種提交待處理事務的方法,所以我想我會開始將save_raw()方法寫入我的模型中,直接將數據保存到數據庫中。
或者您確定您正在查詢您的測試數據庫?它應該與您的「正常」數據庫分開。 – elethan
看看這個https://docs.djangoproject.com/en/1.10/topics/testing/advanced/#advanced-features-of-transactiontestcase –