テスト内の関数から例外を発生させる際に問題が発生しています:
### Implemetation
def MethodToTest():
myVar = StdObject()
try:
myVar.raiseError() # <--- here
return True
except Exception as e:
# ... code to test
return False
### Test file
@patch('stdLib.StdObject', autospec=True)
def test_MethodeToTest(self, mockedObjectConstructor):
mockedObj = mockedObjectConstructor.return_value
mockedObj.raiseError.side_effect = Exception('Test') # <--- do not work
ret = MethodToTest()
assert ret is False
raiseError()
エラーを発生させる機能が欲しいです。
SO でいくつかの例を見つけましたが、私のニーズに合うものはありませんでした。
ベストアンサー1
私が変更され
@patch('stdLib.StdObject', autospec=True)
に
@patch('stdLib.StdObject', **{'return_value.raiseError.side_effect': Exception()})
そしてその# <--- do not work
行を削除しました。
今は動作しています。
これ良い例です。
編集:
mockedObj.raiseError.side_effect = Mock(side_effect=Exception('Test'))
も動作します。