如何模拟从try / except块内部调用的两个函数?

时间:2014-08-07 14:14:04

标签: python unit-testing mocking monkeypatching python-mock

我有一个函数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()

然而,这样做不会修补任何一个,我会得到适当的responseStringIO个对象。如果我从补丁中省略StringIO,我会按预期获得MagicMock个对象(而不是response个对象)。我该如何正常工作?

0 个答案:

没有答案