パッチを使用して特定のモック オブジェクトを返すようにモック ライブラリを取得しようとしています。何を試しても、「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 を使用してそれを渡します。上記のバージョンを機能させるために時間を費やしたので、引き続き感謝して回答します。