[英]unittest.Mock - Combining return_value and side_effect
[英]How to check if a unittest.mock.Mock has return_value set?
我有一個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
的是,新的Mock
創建實例,並存儲在mock._mock_return_value
以備將來再使用。
請注意,此屬性是一個實現細節,這就是為什么它以下划線開頭的原因。 它沒有記錄,在將來的發行版中可能會更改。 但是,當前沒有其他方法可以檢查是否已顯式設置了mock.return_value
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.