簡體   English   中英

如何檢查unittest.mock.Mock是否設置了return_value?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM