如何模拟不在测试范围内的方法?

Luc*_*cas 5 python mocking python-2.7

如何模拟不在测试范围内的方法?

或者:如何模拟一个不直接调用的方法?

在本例中,方法baz
我使用pypi 中的Mock 包

### tests
# ...
def test_method_a(self):
    # how to mock method that is called from bar() ?
    obj = foo.bar()
    self.assertEqual(obj.get('x'), 12345)

### foo
# ...
def bar():
    x = some_module.baz()  # <- how to mock baz() ?
    return x
Run Code Online (Sandbox Code Playgroud)

Roh*_*itJ 3

这是一个向您展示其工作原理的示例:

from mock import patch

def baz():
  return 'y'


def bar():
  x = baz()  # <- how to mock baz() ?
  return x


def test():
  with patch('__main__.baz') as baz_mock:
    baz_mock.return_value = 'blah'
    assert bar() == 'blah'
test()
Run Code Online (Sandbox Code Playgroud)