方法我已经有了一个真正有用的蟒蛇方法是这样的:如何嘲笑非呼叫反对在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)',会发生什么情况,就像在第一种方法中一样? –