Проверьте аргументы, переданные другому вызываемому аргументу - PullRequest
2 голосов
/ 02 октября 2019

У меня есть функция, которой я даю вызов. В моем тесте я хотел бы проверить вызываемые и аргументы, переданные этой функции.

Поскольку функция указана в аргументе, а не импортирована, я не могу ее смоделировать (или я не нашел правильный путьчтобы сделать это).

Тем не менее, я издеваюсь над функцией набора текста, и поскольку она не используется во время выполнения, я знаю, что она ничего не сломает.

Она работает хорошо, но я ненайти его действительно 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}]
...