替换pytest中的关键字参数

时间:2017-12-08 19:47:30

标签: python pytest monkeypatching

我正在做一些测试,我想模拟一个函数的一个参数。

例如我的功能如下:

def foo(arg1, arg2):
    'do something'

并调用该函数:

foo(1, 2)

我想monkeypatch它以某种方式使用3代替2.这可能吗?

尝试了类似的事情:

monkeypatch.setattr('foo', partial(foo, arg2= 3))

但我得到了类型错误:foo()获得了关键字参数的多个值' arg2'

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以简单地为该功能添加别名:

old_foo = monkeypatch.foo
def foo(arg1, arg2):
    return old_foo(arg1, 3)

monkeypatch.foo = foo