为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

元芳怎么了 2022-06-14 10:43:57
我有一个函数,我给它一个可调用的函数。在我的测试中,我想检查这个函数的被调用和参数。由于函数是在参数中给出的而不是导入的,所以我无法模拟它(或者我没有找到正确的方法)。然而,我模拟了一个打字函数,因为它不在运行时使用,我知道它不会破坏任何东西。它运作良好,但我不觉得它真的是 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


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号