如何强制 MagicMock 复制函数签名?
How to force MagicMock to copy function signature?
我想为测试对象模拟一些不重要的函数(其他函数)- time.sleep() 等
我可以用简单的模拟替换它们,这会起作用。但我希望它在使用错误数量的参数调用时报告错误,没有命名参数等。
有什么办法可以说 mock 'raise exception if your argument list is different from given function'?
我想模拟的函数示例:
def mockme(arg1, arg2):
pass
我想要的:
>>> m = mock.CallableMock(signature=mockme)
>>> m(1,2)
<MagicMock name='mockme()' id='140435553563920'>
>>> m(1,2,3)
TypeError: <MagicMock name='mockme()' id='140435553563920'> takes exactly 2 arguments (3 given)
知道怎么做吗?
看看 unittest.mock.create_autospec,那应该完全符合您的要求
def some (a,b):
pass
some_mock=mock.create_autospec(some)
some_mock(1)
我想为测试对象模拟一些不重要的函数(其他函数)- time.sleep() 等
我可以用简单的模拟替换它们,这会起作用。但我希望它在使用错误数量的参数调用时报告错误,没有命名参数等。
有什么办法可以说 mock 'raise exception if your argument list is different from given function'?
我想模拟的函数示例:
def mockme(arg1, arg2):
pass
我想要的:
>>> m = mock.CallableMock(signature=mockme)
>>> m(1,2)
<MagicMock name='mockme()' id='140435553563920'>
>>> m(1,2,3)
TypeError: <MagicMock name='mockme()' id='140435553563920'> takes exactly 2 arguments (3 given)
知道怎么做吗?
看看 unittest.mock.create_autospec,那应该完全符合您的要求
def some (a,b):
pass
some_mock=mock.create_autospec(some)
some_mock(1)