【发布时间】:2023-04-03 07:26:01
【问题描述】:
我正在尝试使用模拟库并基本上修补了一些模块功能。所以,我有一些现有的代码,如下所示:
@patch('loader.utils.run_raise_exception_if_fail')
@patch('time.time', return_value=123)
def test_export_ok(self, _, run_command_mock):
....
calls = run_command_mock.call_args_list
这种工作正常,测试被调用并执行。我试图了解这些函数参数的含义以及它们的生成位置。我以前从未使用过模拟功能。
现在,我正在尝试模拟另一个函数,并添加了以下补丁装饰器:
@patch('assessment.utils.statistics', return_value={"counts": {'volume': 10, hits=10}})
现在,当我尝试运行这个东西时,我收到以下错误:
TypeError: test_export_ok() takes 2 positional arguments but 4 were given
我对补丁装饰器和实际测试的这些函数参数感到困惑。统计方法的函数签名如下:
def statistics(collisions: np.ndarray,
obj_size: Union[List, Tuple]):
【问题讨论】:
-
当您像这样修补某些路径时,该方法会在其参数签名中以相反的顺序接收相应的模拟,您应该相应地进行调整。
-
错误不在补丁函数签名中,而是在测试方法签名中。
-
没有。补丁装饰器和编号。函数中除self之外的变量应该是相同的。试试这个然后“test_export_ok() 接受 2 个位置参数,但给出了 4 个”这个错误将得到解决。
标签:
python
mocking
python-unittest
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python mocking:错误数量的参数错误 - Python技术站