方法我已經有了一個真正有用的蟒蛇方法是這樣的:如何嘲笑非呼叫反對在Python單元測試庫
def stop_widget():
original_widget = load_widget_from_file()
if original_widget:
original_widget.close()
當我想測試它以
確保我叫close()
,我做:
@patch('load_widget_from_file')
def test_stop_widget_with_original_widget(self, lwff_mock):
mock_widget = create_autospec(Widget)
lwff_mock.return_value = mock_widget
stop_widget()
mock_widget.close.assert_called_once_with()
,但我該怎麼辦時,我想測試不調用close
時load_widget_from_file
返回值不計算爲真?
如果我試圖使另一個單元測試有:
@patch('load_widget_from_file')
def test_stop_widget_with_original_widget(self, lwff_mock):
mock_widget = None
lwff_mock.return_value = mock_widget
stop_widget()
mock_widget.close.assert_not_called()
這將炸燬。
'assert_not_called'怎麼樣? – larsks
@larsks,我沒有一個實例化一個函數來調用它的對象。 –
如果您在第二種方法中執行'mock_widget = create_autospec(Widget)',會發生什麼情況,就像在第一種方法中一樣? –