Geo*_*lin 5 python testing pytest python-unittest
我想为测试对象模拟一些不重要的功能(其他功能) - time.sleep() 等。
我可以用简单的模拟替换它们,这会起作用。但是我希望它报告错误,如果它们被调用的参数数量不正确,没有命名参数等。
有什么办法可以说模拟“如果您的参数列表与给定函数不同,则引发异常”?
我想模拟的函数示例:
def mockme(arg1, arg2):
pass
Run Code Online (Sandbox Code Playgroud)
我想要的是:
>>> 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)
Run Code Online (Sandbox Code Playgroud)
知道如何制作吗?
看看unittest.mock.create_autospec,它应该完全符合你的要求
def some (a,b):
pass
some_mock=mock.create_autospec(some)
some_mock(1)
Run Code Online (Sandbox Code Playgroud)