mock
ライブラリでPythonのテストを書いていると、 「どの引数でメソッドが呼び出されているか」というのがよく出てくるのですが、
from __future__ import print_function
import mock
m = mock.MagicMock(side_effect=lambda x: x * x)
m(4)
print("m called with: ", m.call_args_list)
(これは印刷されますm called with: [call(4)]
)。質問: 戻り値 (この場合は16
) を取得する方法はありますか?
詳細: 私の特定のシナリオでは、side_effect を使用してサブモック オブジェクトを返したいと考えています。そのオブジェクトをイントロスペクトして、何が呼び出されているかを確認することが重要です。たとえば、「実際のコード」(非テスト コード) は次のように記述します。
myobj = m(4)
myobj.foo()
を使用するside_effect
と、新しいサブモック オブジェクトを返す便利な方法のように思えますが、keep around も使用できますcall_args_list
。MagicMock
ただし、関数からの戻り値を格納しているようには見えませんside_effect
...私は間違っていますか?