【问题标题】:I'd like to create a mock object in python我想在 python 中创建一个模拟对象
【发布时间】:2012-11-01 19:36:50
【问题描述】:

我想要一个虚拟对象,我可以在 python 中实例化并通过 setattr() 以编程方式创建属性。

我在内置对象上尝试过,但可能有一个很好的理由,它不起作用。

我可以在 python 中使用什么基础对象来实现这些目的,而无需自己实际定义一个?

【问题讨论】:

    标签: python object setattr


    【解决方案1】:

    你不能使用mock = object(),而是创建一个从object派生的Mock

    class Mock(object):
        pass
    
    mock = Mock()
    
    setattr(mock, 'test', 'whatever')
    

    【讨论】:

      【解决方案2】:

      如果您使用模拟库(例如mock),那么您可以断言对象上调用了什么。你可能想也可能不想这样做。

      【讨论】:

        【解决方案3】:

        对 Jon Clement 技术的改进,以防您希望模拟对象在创建时获得一些属性:

        class Mock(object):
            def __init__(self, **kwArgs):  # constructor turns keyword args into attributes
               self.__dict__.update(kwArgs)
        
        
        # now you can do things like this:
        options = Mock(verbose=True, debug=False)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-07
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 2020-10-26
          相关资源
          最近更新 更多