這種模式是從Django文檔追蹤:的Django測試:看到錯誤的反應時生成
class SimpleTest(unittest.TestCase):
def test_details(self):
client = Client()
response = client.get('/customer/details/')
self.assertEqual(response.status_code, 200)
來源:https://docs.djangoproject.com/en/1.8/topics/testing/tools/#default-test-client
如果測試失敗,該錯誤信息不會很大幫助。例如,如果status_code是302,那麼我看到302 != 200
。
現在的問題是:哪裏錯誤的HTTPResponse被創建?
我希望看到解釋器的棧跟蹤創建錯誤的HTTPResponse對象。
我閱讀assertions of django的文檔,但沒有找到匹配的方法。
更新
這是一個普遍的問題:如何馬上看到想要的信息,如果斷言失敗?由於這些斷言(self.assertEqual(response.status_code, 200)
)很常見,我不想開始調試。
更新2016
我再有同樣的想法,發現目前的答案不是100%容易。我寫了一個新的答案,它具有簡單易用(Django的web客戶端的子類)的解決方案:Django: assertEqual(response.status_code, 200): I want to see useful stack of functions calls
你是什麼意思,錯誤的迴應? 404告訴你要麼/ customer/details /沒有被匹配爲URL,要麼被明確返回的視圖返回404. –
@DanielRoseman是的,我是對的。狀態碼404並不是一個好例子。但問題依然存在。我將錯誤的狀態碼更改爲302. – guettli
通常情況下,302意味着您錯過了URL的尾部斜線(例如,它正在從/ customer/details到'/ customer/details /'重定向。如果沒有,您需要查看視圖並查看其返回重定向的位置。測試客戶端沒有響應的回溯,因爲沒有產生響應的錯誤;它只是有一個不同於你預期的狀態碼。 – Alasdair