我有一个函数 foo 是这样的:
class SomeClass(object):
def foo(self, url):
try:
r = requests.get(url)
buffer = StringIO.StringIO(r.content)
except Exception as e:
pass
我正在尝试通过执行以下操作使用 Python 模拟库对其进行测试:
class FooTest(unittest.TestCase):
def test_foo(self):
obj = SomeClass()
with patch('requests.get', MagicMock()):
with patch('StringIO.StringIO', some_fake_method):
obj.foo()
但是,这样做不会修补它们中的任何一个,而是会得到适当的response
对象StringIO
。StringIO
如果我从补丁中省略,我会MagicMock
按预期得到一个对象(而不是一个response
对象)。我怎样才能使它正常工作?