我正在做一些测试,我想模拟一个函数的一个参数。
例如我的功能如下:
def foo(arg1, arg2):
'do something'
并调用该函数:
foo(1, 2)
我想monkeypatch它以某种方式使用3代替2.这可能吗?
尝试了类似的事情:monkeypatch.setattr('foo', partial(foo, arg2= 3))
但我得到了类型错误:foo()获得了关键字参数的多个值' arg2'
知道如何解决这个问题吗?
答案 0 :(得分:2)
您可以简单地为该功能添加别名:
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo