我有一个函数,我给它一个可调用的函数。在我的测试中,我想检查这个函数的被调用和参数。由于函数是在参数中给出的而不是导入的,所以我无法模拟它(或者我没有找到正确的方法)。然而,我模拟了一个打字函数,因为它不在运行时使用,我知道它不会破坏任何东西。它运作良好,但我不觉得它真的是 Pythonic。是否有另一种方法可以让我可以检查调用号和参数(如模拟)?这里是工作代码,package/my_file.py带有函数的文件from typing import Callable, Listdef generate_calls(function_to_call: Callable, arguments_to_give: List[int]): for an_argument in arguments_to_give: function_to_call(arg_1=an_argument)测试文件:from package.my_file import generate_callsdef test_call_with_arguments(mocker): a_list = [1, 2, 3] called_function = mocker.patch('package.my_file.Callable') generate_calls(called_function, a_list) # get the argument of the mock function when called argument_dict = [one_call[1] for one_call in called_function.call_args_list] assert argument_dict == [{'arg_1': 1}, {'arg_1': 2}, {'arg_1': 3}]
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
你可以直接generate_calls在你的测试中传入一个 MagicMock 对象。使用如下模式
from unittest.mock import MagicMock
def call_with_1(fun):
fun(1)
def test_called():
mock_fun = MagicMock()
call_with_1(mock_fun)
mock_fun.assert_called_with(1)
assert mock_fun.call_count == 1
添加回答
举报
0/150
提交
取消
