如何检查 unittest.mock.Mock 是否设置了 return_value?
How to check if a unittest.mock.Mock has return_value set?
我有一个 unittest.mock.Mock
实例 m
。我唯一知道的是它用 foo()
方法模拟 class 。我需要确定 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。
只要您还没有实际访问 mock.return_value
,您可以测试是否设置了非标准 return 值:
m.foo._mock_return_value is unittest.mock.DEFAULT
当您使用 mock.return_value
属性 时,如果 mock._mock_return_value
仍然设置为 unittest.mock.DEFAULT
,则会创建一个新的 Mock
实例并将其存储在mock._mock_return_value
供将来重复使用。
请注意,此属性是一个实现细节,这就是它以下划线开头的原因。它没有记录在案,可能会在未来的版本中更改。但是,目前没有其他方法可以检查 mock.return_value
是否已明确设置。
我有一个 unittest.mock.Mock
实例 m
。我唯一知道的是它用 foo()
方法模拟 class 。我需要确定 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。
只要您还没有实际访问 mock.return_value
,您可以测试是否设置了非标准 return 值:
m.foo._mock_return_value is unittest.mock.DEFAULT
当您使用 mock.return_value
属性 时,如果 mock._mock_return_value
仍然设置为 unittest.mock.DEFAULT
,则会创建一个新的 Mock
实例并将其存储在mock._mock_return_value
供将来重复使用。
请注意,此属性是一个实现细节,这就是它以下划线开头的原因。它没有记录在案,可能会在未来的版本中更改。但是,目前没有其他方法可以检查 mock.return_value
是否已明确设置。