3

パッチを使用して特定のモック オブジェクトを返すようにモック ライブラリを取得しようとしています。何を試しても、「with」句内で新しいオブジェクトをインスタンス化すると、カスタマイズされたオブジェクトではなく、汎用のモック オブジェクトが取得されます。

例としてロギングを使用した私のコードは次のとおりです。

    import logging

    my_mock = Mock()
    my_mock.id = 'i-12341234'

    with patch('logging.PlaceHolder', new=my_mock) as mockobj:
        print mockobj.id          # correctly prints 'i-12341234'

        newobj = logging.PlaceHolder(None)
        print newobj.id           # prints <Mock name='mock().id' id='47607184'>

logging.Placeholder の新しいインスタンスがインスタンス化されるたびに、モックを my_mock に返すにはどうすればよいですか?

結局のところ、Mock をサブクラス化し、new_callable を使用してそれを渡します。上記のバージョンを機能させるために時間を費やしたので、引き続き感謝して回答します。

4

1 に答える 1