次のような関数 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
ます。これを正しく機能させるにはどうすればよいですか?