2
我有一個python mock對象,我想斷言是否設置了該對象的任何屬性。我不相信PropertyMock將用於我的目的,因爲我必須知道是否設置了任何屬性,而不是特定的屬性。它也不會像我可以嘲笑模擬對象的方法__setattr__
。蟒蛇模擬斷言任何屬性設置
如何測試模擬對象的任意屬性是否已設置?
我有一個python mock對象,我想斷言是否設置了該對象的任何屬性。我不相信PropertyMock將用於我的目的,因爲我必須知道是否設置了任何屬性,而不是特定的屬性。它也不會像我可以嘲笑模擬對象的方法__setattr__
。蟒蛇模擬斷言任何屬性設置
如何測試模擬對象的任意屬性是否已設置?
雖然此解決方案並不理想,但您可以在初始化後存儲模擬對象的屬性,並將它們與測試時的屬性進行比較。
>>> myobj = Mock()
>>> attrsbefore = set(dir(myobj))
>>> attrsbefore
set(['reset_mock', 'method_calls', 'assert_called_with', 'call_args_list', 'mock_calls', 'side_effect', 'assert_called_once_with', 'assert_has_calls', 'configure_mock', 'attach_mock', 'return_value', 'call_args', 'assert_any_call', 'mock_add_spec', 'called', 'call_count'])
>>> myobj.foo = 'bar'
>>> set(dir(myobj)) - attrsbefore
set(['foo'])
此解決方案需要額外的保持狀態,不嚴格地測試屬性是否被設置,僅在屬性的差在兩個時間點。