2

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

代码示例如下:

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

# Handle response here ...

我读过你可以使用SimpleHTTPServer来完成这个,但我不确定我是如何使用它来达到这个目的的,任何想法都会非常感激!

4

1 回答 1

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()

文档中有更多示例。

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

于 2013-04-08T06:41:09.363 回答