我知道如果我这样做:
import mock
my.factory = mock.MagicMock()
然后my.factory所有的东西都被嘲笑了,但是有一种方法:create_fruit(self, type)
我想要传入'apple'
然后返回一个模拟'apple'
对象,如果我传入'banana'
然后返回'banana'
个对象。
这可以由mock
模块实现吗?我在doc中找不到它:
https://pypi.python.org/pypi/mock
答案 0 :(得分:0)
是的,你可以。但是你必须为它定义一个函数。
from mock import Mock
def mock_create_fruit(fruit):
if fruit not in ('apple', 'banana'):
raise AssertionError('create_fruit not called with an allowed type, was %s' % (fruit,)
return type(fruit, (object,), {})()
my.factory.create_fruit = Mock(side_effect=mock_create_fruit)
我们的mock_create_fruit函数的最后一行是动态创建一个类,创建它的一个实例,然后将它返回给调用者。