【问题标题】:Can I mock a method with specified parameters by using `mock` in python?我可以在python中使用`mock`来模拟具有指定参数的方法吗?
【发布时间】:2013-12-02 08:57:22
【问题描述】:

我知道我是否这样做:

import mock
my.factory = mock.MagicMock()

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

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

【问题讨论】:

    标签: python mocking python-mock python-unittest


    【解决方案1】:

    是的,你可以。但是你必须为它定义一个函数。

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

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2019-09-25
      • 1970-01-01
      • 2020-08-30
      • 2021-06-24
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多