我有一个unittest.mock.Mock
实例m
。我唯一知道的是它使用foo()
方法模拟了一个类。我需要确定是否m.foo.return_value
已设置,如果没有设置,请提供默认值。这可能吗?
换句话说,has_return_value_set()
下面如何实现?
m = unittest.mock.Mock()
# ...
if not has_return_value_set(m.foo):
m.foo.return_value = MY_RETURN_VALUE
我已经尝试过m.foo.return_value
直接检查,但是在第一次访问时它被初始化为一个新的模拟。
只要您尚未实际访问mock.return_value
,就可以测试是否使用以下方法设置了非标准返回值:
m.foo._mock_return_value is unittest.mock.DEFAULT
使用mock.return_value
属性后,如果mock._mock_return_value
将其设置为unittest.mock.DEFAULT
still,Mock
则会创建一个新实例并将其存储在其中mock._mock_return_value
以备将来重用。
请注意,此属性是实现细节,这就是为什么它以下划线开头的原因。它没有记录,在将来的版本中可能会更改。但是,当前没有其他方法可以检查是否mock.return_value
已明确设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句