2013-04-08 55 views
2

因此,我有一個Django應用程序,作爲其功能的一部分向其他服務器發出請求(使用requests模塊)。我想要做的是有一臺可用於單元測試的服務器,它使我能夠對來自Django應用程序的測試請求做出回覆(允許測試Django如何處理不同的潛在響應)。單元測試Django與遠程調用另一臺服務器

代碼的一個例子是:

payload = {'access_key': key, 
      'username': name} 
response = requests.get(downstream_url, params=payload) 

# Handle response here ... 

我讀過,你可以使用SimpleHTTPServer做到這一點,但我不知道我是如何用它來爲此,任何想法,將非常感謝!

回答

1

使用mock模塊。

from mock import patch, MagicMock 

@patch('your.module.requests') 
def test_something(self, requests_mock): 
    response = MagicMock() 
    response.json.return_value = {'key': 'value'} 
    requests_mock.get.return_value = response 
    … 
    requests_mock.get.assert_called_once_with(…) 
    response.json.assert_called_once() 

更多the docs的例子。

你不需要(和不應該)測試發出請求的代碼。你想嘲笑那部分,並專注於測試處理響應的邏輯。