У меня есть функция, которой я даю вызов. В моем тесте я хотел бы проверить вызываемые и аргументы, переданные этой функции.
Поскольку функция указана в аргументе, а не импортирована, я не могу ее смоделировать (или я не нашел правильный путьчтобы сделать это).
Тем не менее, я издеваюсь над функцией набора текста, и поскольку она не используется во время выполнения, я знаю, что она ничего не сломает.
Она работает хорошо, но я ненайти его действительно 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}]