单元测试Django远程调用另一台服务器

时间:2013-04-08 06:07:24

标签: django unit-testing django-testing

所以我有一个Django应用程序,它作为其功能的一部分向另一个服务器发出请求(使用requests模块)。我想要做的是有一个可用于单元测试的服务器,它可以让我对来自Django应用程序的测试请求做出反应(允许测试Django如何处理不同的潜在响应)。

代码示例如下:

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

# Handle response here ...

我已经读过您可以使用SimpleHTTPServer来完成此任务,但我不确定我是如何使用它的,任何想法都会非常感激!

1 个答案:

答案 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中的更多示例。

您不需要(并且不应该)测试发出请求的代码。您想模拟该部分,并专注于测试处理响应的逻辑。