6

私はメソッドを嘲笑しています。最初の呼び出しで例外を発生させたいのですが、例外でそのメソッドを別のパラメーターで再度呼び出しているため、2 回目の呼び出しは正常に処理されるようにしたいと考えています。私は何をする必要がありますか?

コード

1を試す

with patch('xblock.runtime.Runtime.construct_xblock_from_class', Mock(side_effect=Exception)):

トライ2

with patch('xblock.runtime.Runtime.construct_xblock_from_class', Mock(side_effect=[Exception, some_method])):

2 回目の呼び出しでsome_methodは、 がそのまま返され、データは別のパラメーターで処理されません。

4

1 に答える 1

4
class Foo(object):
  def Method1(self, arg):
    pass

  def Method2(self, arg):
    if not arg:
      raise
    self.Method1(arg)

  def Method3(self, arg):
    try:
      self.Method2(arg)
    except:
      self.Method2('some default value')

class FooTest(unittest.TestCase):
  def SetUp(self):
    self.helper = Foo()

  def TestFooMethod3(self):
    with mock.patch.object(self.helper, 'Method2', 
                           side_effect=[Exception,self.helper.Method1]
                           ) as mock_object:
      self.helper.Method3('fake_arg')
      mock_object.assert_has_calls([mock.call('fake_arg'),
                                    mock.call('some default value')])
于 2015-12-07T15:15:19.247 に答える