【发布时间】:2017-12-08 19:47:29
【问题描述】:
我正在做一些测试,我想模拟一个函数的一个参数。
例如我得到的函数如下:
def foo(arg1, arg2):
'do something'
并调用该函数:
foo(1, 2)
我想以某种方式对其进行猴子补丁以使用 3 而不是 2。这可能吗?
试过类似的东西:
monkeypatch.setattr('foo', partial(foo, arg2= 3))
但是我得到了类型错误:foo() got multiple values for keyword argument 'arg2'
知道如何解决这个问题吗?
【问题讨论】:
-
您似乎在间接测试 foo,并且您正在尝试修改对 foo 的调用。请编辑以显示:1.
def test_bar,2. 除了def foo之外,还调用了foo(可能是bar?)。您可能应该直接测试 foo,然后在bar中使用依赖注入。
标签: python pytest monkeypatching