我有一個函數,我給它一個可調用的函數。在我的測試中,我想檢查這個函數的被調用和參數。由于函數是在參數中給出的而不是導入的,所以我無法模擬它(或者我沒有找到正確的方法)。然而,我模擬了一個打字函數,因為它不在運行時使用,我知道它不會破壞任何東西。它運作良好,但我不覺得它真的是 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
提交
取消
