しばらくの間、PythonでMockを使用しています。
今、私たちは関数をモックしたい状況があります
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
通常、これをモックする方法は次のとおりです(fooがオブジェクトの一部であると想定)
self.foo = MagicMock(return_value="mocked!")
でも、foo()を数回呼び出すと、使用できます
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
現在、入力パラメーターが特定の値であるときに固定値を返したいという状況に直面しています。「my_param」が「something」と等しい場合、「my_cool_mock」を返します
これはpythonのmockitoで利用できるようです
when(dummy).foo("something").thenReturn("my_cool_mock")
私はモックで同じことを達成する方法を探していましたが、成功しませんでしたか?
何か案は?
monkeypatch
。Monkeypatchは、「テストのためにこの関数を置き換える」ためのものですが、Mockは、mock_calls
それを確認したり、呼び出されたものについてアサーションを作成したりする場合にも使用します。両方の場所があり、私は多くの場合、特定のテストファイルで異なる時間に両方を使用します。