检查赋予另一个可调用参数的参数

我有一个函数,我给它一个可调用的函数。在我的测试中,我想检查这个函数的被调用和参数。


由于函数是在参数中给出的而不是导入的,所以我无法模拟它(或者我没有找到正确的方法)。


然而,我模拟了一个打字函数,因为它不在运行时使用,我知道它不会破坏任何东西。


它运作良好,但我不觉得它真的是 Pythonic。


是否有另一种方法可以让我可以检查调用号和参数(如模拟)?


这里是工作代码,package/my_file.py带有函数的文件


from typing import Callable, List


def 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_calls



def 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}]


元芳怎么了
浏览 248回答 1
1回答

当年话下

你可以直接generate_calls在你的测试中传入一个 MagicMock 对象。使用如下模式from unittest.mock import MagicMockdef 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python