Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模拟:跟踪所有呼叫。Shell与程序不一致_Python_Unit Testing_Python 3.x_Mocking_Python Mock - Fatal编程技术网

Python 模拟:跟踪所有呼叫。Shell与程序不一致

Python 模拟:跟踪所有呼叫。Shell与程序不一致,python,unit-testing,python-3.x,mocking,python-mock,Python,Unit Testing,Python 3.x,Mocking,Python Mock,为什么mock.mock_调用的内容会因我是在shell中运行还是在 在节目中?mock.mock_calls==expected的断言在程序中失败,但在shell中传递。 代码基于跟踪多个调用的文档 输出: <MagicMock name='mock.method()' id='45740272'> <MagicMock name='mock.attribute.method()' id='45850128'> mock.mock_calls [call.metho

为什么mock.mock_调用的内容会因我是在shell中运行还是在 在节目中?
mock.mock_calls==expected
的断言在程序中失败,但在shell中传递。 代码基于跟踪多个调用的文档

输出:

<MagicMock name='mock.method()' id='45740272'>
<MagicMock name='mock.attribute.method()' id='45850128'>

mock.mock_calls
 [call.method(),
 call.method().__str__(),
 call.attribute.method(10, x=53),
 call.attribute.method().__str__()]

mock.method_calls
 [call.method(), call.attribute.method(10, x=53)]
False
True

mock.mock_调用
[call.method(),
call.method()。\uuuu str\uuuuu(),
call.attribute.method(10,x=53),
call.attribute.method()
mock.method\u调用
[call.method(),call.attribute.method(10,x=53)]
假的
真的

我正在Windows 7计算机上运行Python 3.4。

这是因为您正在打印方法调用。它导致调用magic方法:

print(mock.method())
print(mock.attribute.method(10, x=53))
消除
print()
调用,您将看到所需的行为:

mock.method()
mock.attribute.method(10, x=53)
仅供参考,控制台示例:

>>> mock = unittest.mock.MagicMock()
>>> print(mock.method())
<MagicMock name='mock.method()' id='4433183576'>
>>> print(mock.attribute.method(10, x=53))
<MagicMock name='mock.attribute.method()' id='4433223752'>
>>> mock.mock_calls
[call.method(),
 call.method().__str__(),
 call.attribute.method(10, x=53),
 call.attribute.method().__str__()]
mock.method()
mock.attribute.method(10, x=53)
>>> mock = unittest.mock.MagicMock()
>>> print(mock.method())
<MagicMock name='mock.method()' id='4433183576'>
>>> print(mock.attribute.method(10, x=53))
<MagicMock name='mock.attribute.method()' id='4433223752'>
>>> mock.mock_calls
[call.method(),
 call.method().__str__(),
 call.attribute.method(10, x=53),
 call.attribute.method().__str__()]
>>> mock = unittest.mock.Mock()
>>> print(mock.method())
<Mock name='mock.method()' id='4433235528'>
>>> print(mock.attribute.method(10, x=53))
<Mock name='mock.attribute.method()' id='4433252648'>
>>> mock.method_calls
[call.method(), call.attribute.method(10, x=53)]
>>> mock.mock_calls
[call.method(), call.attribute.method(10, x=53)]