如何附加的返回值模拟补丁(…).start()到父模拟?

2024-09-30 05:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

模拟示例list this example

>>> 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 ^{} and ^{} calls而不是上下文管理器,patcher.start()似乎返回了一些与上下文化的mock不同的东西,至少在将它们附加到父级mock的能力方面是这样的:

^{pr2}$

我是不是遗漏了什么,或者这是一个bug,怎样才能模拟出几个这样的调用并验证它们都是按预期顺序进行的呢?在


Tags: nameidfooaswithmanagerbarcall
1条回答
网友
1楼 · 发布于 2024-09-30 05:31:11

因为autospec=True和一个函数被模拟出来,patch也将返回一个函数。为了访问模拟对象,您可以访问patch(…).start().mock。在

相关问题 更多 >

    热门问题