【问题标题】:Unit testing Django with remote calls to another server通过远程调用另一台服务器对 Django 进行单元测试
【发布时间】:2013-04-08 06:07:24
【问题描述】:

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

代码示例如下:

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

# Handle response here ...

我读到您可以使用SimpleHTTPServer 来完成此操作,但我不确定我如何使用它来实现此目的,任何想法将不胜感激!

【问题讨论】:

    标签: django unit-testing django-testing


    【解决方案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 中有更多示例。

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

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2011-12-10
      • 2015-11-05
      • 1970-01-01
      相关资源
      最近更新 更多