亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查賦予另一個可調用參數的參數

檢查賦予另一個可調用參數的參數

元芳怎么了 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 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號