2

我知道我是否这样做:

import mock
my.factory = mock.MagicMock()

那么 my.factory 的所有东西都被模拟了,但实际上有一个方法:create_fruit(self, type)我想要如果我传入'apple'然后返回一个模拟'apple'对象,如果我传入 a'banana'然后返回一个'banana'对象。

这可以通过mock模块实现吗?我无法在文档中清楚地找到它: https ://pypi.python.org/pypi/mock

4

1 回答 1

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 函数的最后一行是动态创建一个类,创建它的一个实例,然后将它返回给调用者。

于 2013-12-03T11:33:39.860 回答