gpt4 book ai didi

python - 当函数使用 lambda 参数时如何使用模拟

转载 作者:行者123 更新时间:2023-12-05 07:03:00 25 4
gpt4 key购买 nike

我正在测试一些使用 Amazon 的 pysqld 库的代码。其中一个函数是 execute_lambda,它接受一个 lambda 作为参数(这是一个事务,您可以传递一些要执行的函数)。

我正在尝试模拟此调用,但我无法确定参数。让我们看一个例子:

with session() as s:

s.execute_lamda(lambda x: function(param1, param2))

当我去参加测试并检查模拟调用时:

(Pdb) self.mocks["pyqldb"]["mock"]().get_session().__enter__().execute_lambda.mock_calls
[call(<function init_schema.<locals>.<lambda> at 0x7fd80c97a4d0>, <function init_schema.<locals>.<lambda> at 0x7fd80c97a200>),
call(<function init_schema.<locals>.<lambda> at 0x7fd80c97a5f0>, <function init_schema.<locals>.<lambda> at 0x7fd80c97a680>),
call(<function init_schema.<locals>.<lambda> at 0x7fd80c97a7a0>, <function init_schema.<locals>.<lambda> at 0x7fd80c97a710>),
call(<function init_schema.<locals>.<lambda> at 0x7fd80c97a8c0>, <function init_schema.<locals>.<lambda> at 0x7fd80c97a830>),
call(<function init_schema.<locals>.<lambda> at 0x7fd80c97a9e0>, <function init_schema.<locals>.<lambda> at 0x7fd80c97a950>),
call(<function init_schema.<locals>.<lambda> at 0x7fd80c97ab00>, <function init_schema.<locals>.<lambda> at 0x7fd80c97aa70>),
call().__next__(),
call().__next__().__str__()]

我如何去每个调用并检查 lambda 的参数?

最佳答案

您可以使用 call_args_list获取所有带有 args 的调用。

....execute_lambda.call_args_list

例子

>>> mock = Mock(return_value=None)
>>> mock()
>>> mock(3, 4)
>>> mock(key='fish', next='w00t!')
>>> mock.call_args_list
[call(), call(3, 4), call(key='fish', next='w00t!')]
>>> expected = [(), ((3, 4),), ({'key': 'fish', 'next': 'w00t!'},)]
>>> mock.call_args_list == expected

是的引用 - https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_args_list

关于python - 当函数使用 lambda 参数时如何使用模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com