【发布时间】:2017-11-08 10:05:13
【问题描述】:
是否可以让Mock 对象在调用时返回值并在调用时执行语句?例如:
> mocked_func = Mock(return_value='Returned foo',
side_effect=lambda: print('Side effect executed')
)
> print(mocked_func())
Side effect executed
None
这里的文档似乎有点模棱两可,但在我看来,当使用 side_effect 时,return_value 会被完全忽略,并且只返回 side_effect 函数的结果(在 print() 的情况下是None)。
由于 Python 并不真正支持多语句 lambda(AFAIK,你能做的最好的就是将表达式放在一个元组中,但随后会返回整个元组) - 是否可以组合这两个参数?
我想避免必须定义一个新函数并将其用作side_effect,我觉得在Mock 中声明两者会更简洁。
【问题讨论】:
标签: python unit-testing mocking