【问题标题】:Unable to mock instance attribute while leveraging side_effect在利用 side_effect 时无法模拟实例属性
【发布时间】:2017-11-10 06:45:59
【问题描述】:

我正在尝试执行类似的操作:

mymock = Mock()
mymock.variable.side_effect = [1,2,3]
print mymock.variable # Should print 1
print mymock.variable # Should print 2
print mymock.variable # Should print 3

但是,我没有得到想要的结果。我错过了什么?

【问题讨论】:

    标签: python unit-testing mocking magicmock


    【解决方案1】:

    使用side_effect 仅适用于将属性作为方法调用时:

    In [3]: mymock = Mock()
    
    In [4]: mymock.variable.side_effect = [1,2,3]
    
    In [5]: mymock.variable()
    Out[5]: 1
    
    In [6]: mymock.variable()
    Out[6]: 2
    
    In [7]: mymock.variable()
    Out[7]: 3
    

    没有类似的功能可以给 an 属性赋值。

    【讨论】:

    • 有什么方法可以在不使用 side_effect 的情况下实现这一点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多