« ^ »

Pythonのunittest.mockで引数から戻り値を切り替えたいときはside_effectに関数オブジェクトを入れる

所要時間: 約 1分

side_effectに呼び出し可能オブジェクトを指定して その中で引数を元に分岐させれば良い。

from unittest import mock


class Foo:
    def foo(self, arg):
        return True


@mock.patch.object(Foo, "foo")
def test_it(m_foo):
    m_foo.side_effect = lambda arg: 1 if arg is True else 2
    res = Foo().foo(False)
    print(res)
    

test_it()
2