【问题标题】:Python passing an object as side_effect to mock.patchPython将对象作为副作用传递给mock.patch
【发布时间】:2018-01-25 15:21:39
【问题描述】:

我正在和我的讲师争论——他坚持认为可以将一个对象作为 side_effect 的值传递给 mock.patch 以模拟程序中的原始函数,同时仍将参数传递给该函数——在这种特殊情况下,将它们存储在对象中。

基本上:

with mock.patch('function_to_be_mocked', side_effect=my_object) as m:
    function_to_be_mocked(arg1, arg2)

这两行代码之后,arg1和arg2将作为属性存储在my_object中。

然而,根据side_effect 的文档,可以传递给 side_effect 的唯一对象是异常或可迭代对象,它们都不关心传递给原始函数的参数。

我试图指出这个错误,但我的讲师说有办法解决它。

真的有办法吗,还是只是我的讲师拒绝承认他的错误?

【问题讨论】:

    标签: python mocking


    【解决方案1】:

    我认为他是对的。我们可以将 callables 分配给 side_effect,并且 callable 将使用与 function_to_be_mockedarg1arg2 调用的相同参数调用。

    来源和例子: https://docs.python.org/3.6/library/unittest.mock.html#unittest.mock.Mock.side_effect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-07
      • 2020-04-07
      • 2016-07-03
      • 2012-07-13
      • 2021-07-12
      • 2010-10-30
      相关资源
      最近更新 更多