Ответ 1
У вас есть опечатка в вашем примере, отсутствует '
.
Не совсем понятно, что вы просите, но если я правильно вас понимаю, вы спрашиваете, как проверить, что поднятое исключение попало внутрь move
. Одна из проблем заключается в том, что вы исправляете shutil.rmtree
, а не shutil.move
, но не можете быть уверены, что shutil.rmtree
когда-либо будет вызван. shutil.move
только на самом деле вызывает shutil.rmtree
, если он успешно копирует каталог, но поскольку вы копируете self.src_f
для себя, этого не происходит. Это не очень хороший способ его исправления, потому что предположение, что shutil.move
вызывает shutil.rmtree
вообще, не гарантируется и зависит от реализации.
Как проверить его, просто проверьте, что возвращаемое значение соответствует ожидаемому:
@patch.object(shutil, 'move')
def test_move_catch_exception(self, mock_move):
''' Tests moving a target hits exception. '''
e = OSError('abc')
mock_move.side_effect = e
returns = move(self.src_f, self.src_f, **self.kwargs)
assert returns == (False, e)