所以我有一个Django应用程序,它作为其功能的一部分向另一个服务器发出请求(使用requests模块)。我想要做的是有一个可用于单元测试的服务器,它可以让我对来自Django应用程序的测试请求做出反应(允许测试Django如何处理不同的潜在响应)。
代码示例如下:
payload = {'access_key': key,
'username': name}
response = requests.get(downstream_url, params=payload)
# Handle response here ...
我已经读过您可以使用SimpleHTTPServer来完成此任务,但我不确定我是如何使用它的,任何想法都会非常感激!
答案 0 :(得分: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中的更多示例。
您不需要(并且不应该)测试发出请求的代码。您想模拟该部分,并专注于测试处理响应的逻辑。