替换pytest中的关键字参数
Replacing keyword argument in pytest
我正在做一些测试,我想模拟一个函数的一个参数。
例如我得到的函数如下:
def foo(arg1, arg2):
'do something'
并调用该函数:
foo(1, 2)
我想以某种方式对其进行 monkeypatch 以使用 3 而不是 2。这可能吗?
试过类似的东西:
monkeypatch.setattr('foo', partial(foo, arg2= 3))
但是我遇到了类型错误:foo() 得到了关键字参数的多个值'arg2'
知道如何解决这个问题吗?
您可以简单地为函数添加别名:
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo
我正在做一些测试,我想模拟一个函数的一个参数。
例如我得到的函数如下:
def foo(arg1, arg2):
'do something'
并调用该函数:
foo(1, 2)
我想以某种方式对其进行 monkeypatch 以使用 3 而不是 2。这可能吗?
试过类似的东西:
monkeypatch.setattr('foo', partial(foo, arg2= 3))
但是我遇到了类型错误:foo() 得到了关键字参数的多个值'arg2'
知道如何解决这个问题吗?
您可以简单地为函数添加别名:
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo