【问题标题】:Using Patched Method to get called arguments?使用修补方法获取调用参数?
【发布时间】:2026-01-14 16:50:02
【问题描述】:

我正在对数据库调用进行一些单元测试,我实际上是在为游标做一个补丁。我遇到的问题是我想修补返回变量,但还要检查参数是什么以确保它们有效。

这可能吗?我正在浏览文件,但除了side_effectreturn_value 之外什么都没有。

我主要是在浏览文档:https://docs.python.org/3/library/unittest.mock.html

由于 patch 是 mock 的包装器,因此在查看 Mock 类时,我想可能还有其他东西可以证明是有用的。

【问题讨论】:

    标签: python python-3.x python-unittest


    【解决方案1】:

    类Mock类,你可以看到一个叫call_args的属性,它返回最近调用的参数,它返回一个调用类型。

    call(1,2,3,4)
    

    但您也可以通过引用 args 直接访问要处理的参数。

    from test import func
    with patch("some.func") as fn:
        fn.return_value = "hello world"
        func(1,2,3,4)
        tuple_of_args = fn.call_args.args
        print(tuple_of_args)
    

    【讨论】: