日々精進

新しく学んだことを書き留めていきます

patch.objectを使ってメソッドをmockに置き換える

あるクラスのメソッドをMockに置き換えたい場合、以下のようにすることが多いが、複数置き換えたい場合にネストが深くなってしまう。

with patch.object(AClass, 'method', new=method2):
    #テストコード

以下のようにannotationにするとネストが深くならないのでこっちの方が良さそう。

    @patch.object(AClass, '_log_input_and_exit', new=target)
    @patch.object(AClass, '_exit_ok', new=MagicMock())
    def test_run_and_exception(self):

参考:

stackoverflow.com