2015-03-31 39 views
0

我試圖覆蓋HTTP_POST到一個視圖中請求對象的特定字符串:如何使用mock.patch()獲取Django請求對象?

with patch('django.core.handlers.wsgi.WSGIRequest') as request: 
    request.META = {'HTTP_HOST': 'www.abc.com'} 
    resp = self.client.get('/') 

但很明顯,它不工作,因爲它的抱怨HTTP_POST KeyError異常

回答

1

而不是使用一個模擬對象,你應該使用django.test.client.RequestFactory來生成請求對象。

+0

我沒有特別的觀點來測試,因爲這是一個庫,我只是想測試中間件,但看起來像我可能只是直接測試中間件而不經過請求 – 2015-03-31 00:21:31

+0

你仍然需要一個'請求對象。另一個選擇是簡單地使用'django.http.request.HttpRequest',它比'WSGIRequest'更容易構建。這兩種方法都是專門爲測試而定製的,並且經常在Django的測試套件中使用。 – knbk 2015-03-31 00:39:02