Python 创建autospec';使用名称值进行模拟
我正在尝试使用Python 创建autospec';使用名称值进行模拟,python,unit-testing,mocking,Python,Unit Testing,Mocking,我正在尝试使用mock.create_autospec创建一个名为kwarg的autospecc'd mock。但是,每当我设置名称时,就会出现TypeError异常 下面是一个例子: >>> import mock >>> def a(): ... print "blah" ... >>> a() blah >>> q = mock.create_autospec(a) >>> q <funct
mock.create_autospec
创建一个名为kwarg的autospecc'd mock。但是,每当我设置名称时,就会出现TypeError
异常
下面是一个例子:
>>> import mock
>>> def a():
... print "blah"
...
>>> a()
blah
>>> q = mock.create_autospec(a)
>>> q
<function a at 0x7f184ceb1938>
>>> q()
<MagicMock name='mock()' id='139742347069904'>
为什么会发生这种情况?当我尝试制作一个常规的MagicMock
时,一切都很顺利:
>>> q = mock.MagicMock(name="a")
>>> q
<MagicMock name='a' id='139742346475088'>
q=mock.MagicMock(name=“a”)
>>>q
它看起来像是提供的名称和生成的名称之间的冲突。可能是一个bug,所以你应该尝试报告它
还有另一种方法可以使用有意义的名称创建autospec'd mock,但需要修补:
with mock.patch('__main__.a', autospec=True):
print(repr(a()))
# <MagicMock name='a()' id='140705539482000'>
带有mock.patch(“\uuuu main\uuuuu.a”,autospec=True):
打印(repr(a())
#
这似乎是不必要的迂回。我已经向他们的追踪者提交了一份错误报告。
with mock.patch('__main__.a', autospec=True):
print(repr(a()))
# <MagicMock name='a()' id='140705539482000'>