使用对另一台服务器的远程调用对Django进行单元测试
因此,我有一个Django应用程序,作为其功能的一部分,它向另一台服务器发出请求(使用模块)。我想做的是让一个服务器可用于单元测试,它为我提供对来自Django应用程序的测试请求的固定响应(允许测试Django如何处理不同的潜在响应) 代码的一个例子是:使用对另一台服务器的远程调用对Django进行单元测试,django,unit-testing,django-testing,Django,Unit Testing,Django Testing,因此,我有一个Django应用程序,作为其功能的一部分,它向另一台服务器发出请求(使用模块)。我想做的是让一个服务器可用于单元测试,它为我提供对来自Django应用程序的测试请求的固定响应(允许测试Django如何处理不同的潜在响应) 代码的一个例子是: payload = {'access_key': key, 'username': name} response = requests.get(downstream_url, params=payload) # Handl
payload = {'access_key': key,
'username': name}
response = requests.get(downstream_url, params=payload)
# Handle response here ...
我已经读到,你可以用它来完成这一点,但我不知道我如何使用它达到这一目的,任何想法将不胜感激 使用
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()
还有更多的例子
您不需要(而且不应该)测试发出请求的代码。您希望模拟该部分,并将重点放在测试处理响应的逻辑上