1

问题

我有一个调用 url 然后修改该 url 响应的函数。如何为修改响应的该函数代码部分编写单元测试,而不必依赖该 url?

例子

我的模块.py

import requests

def get_some_resource():
    url = 'http://httpbin.org/get'
    r = requests.get(url)
    # Special manipulation of returned text (what I want to test) simple example used
    output = r.text.upper()
    return output

到目前为止我尝试过的

  • 使用 mock 的 MagicMock() (据我所知,你不能用它来覆盖函数的变量)
  • 我考虑过拆分该函数的两个部分(检索 url 和修改响应),但是,我不清楚这是否有必要
  • 这么多谷歌搜索我的手受伤了
4

1 回答 1

1

如果这是一个单元测试,您可能只想模拟出requests库。你可以只是patch整个事情,或者只是get,这并不重要。

它看起来像:

get = mock.Mock()
text = get.return_value.text = "hey I got this")
with mock.patch("my_module.requests.get", get):
    resource = get_some_resource()
self.assertEqual(resource, text.upper())

干杯。

于 2012-07-23T23:56:49.223 回答