1

モック例list this examplemock.patch(...)。start()の戻り値を親モックにアタッチするにはどうすればよいですか?

>>> manager = MagicMock() 
>>> with patch('mymodule.Class1') as MockClass1: 
...  with patch('mymodule.Class2') as MockClass2: 
...   manager.attach_mock(MockClass1, 'MockClass1') 
...   manager.attach_mock(MockClass2, 'MockClass2') 
...   MockClass1().foo() 
...   MockClass2().bar() 
... 
<MagicMock name='mock.MockClass1().foo()' id='...'> 
<MagicMock name='mock.MockClass2().bar()' id='...'> 
>>> manager.mock_calls 
[call.MockClass1(), 
call.MockClass1().foo(), 
call.MockClass2(), 
call.MockClass2().bar()] 

私が代わりにコンテキストマネージャのパッチャーにexplicit start and stop callsと、同じことを実現したいと思いますし、それは本当にでモックではないpatcher.start()戻って何かを思わ1の文脈と同じ感覚では、少なくともモック親にそれらを添付する能力に関して、次のとおりです。

>>> from mock import patch, Mock 
>>> p = patch('requests.get', autospec=True) 
>>> manager = Mock() 
>>> manager.attach_mock(p.start(), 'requests_get') 
>>> import requests 
>>> requests.get('https://google.com') 
<MagicMock name='get()' id='4472381392'> 
>>> manager.mock_calls 
[] 
>>> p.stop() 
>>> manager.mock_calls 
[] 

私は何かが欠けている、またはこれはバグで、からかっについて移動する最良の方法は何ですかアムいくつかのそのような呼び出しを呼び出し、それらがすべて期待通りの順序で作られた?

答えて

0

autospec=Trueのため、機能が欺かれているので、patchも機能を返します。モックオブジェクトにアクセスするには、patch(…).start().mockにアクセスしてください。

関連する問題