Python 在pytest中替换关键字参数
我正在做一些测试,我想模拟一个函数的一个参数 例如,我得到了如下函数:Python 在pytest中替换关键字参数,python,pytest,monkeypatching,Python,Pytest,Monkeypatching,我正在做一些测试,我想模拟一个函数的一个参数 例如,我得到了如下函数: def foo(arg1, arg2): 'do something' 并调用该函数: foo(1, 2) old_foo = monkeypatch.foo def foo(arg1, arg2): return old_foo(arg1, 3) monkeypatch.foo = foo 我想用3而不是2来修补它。可能吗 尝试了类似于: monkeypatch.setattr('foo', par
def foo(arg1, arg2):
'do something'
并调用该函数:
foo(1, 2)
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo
我想用3而不是2来修补它。可能吗
尝试了类似于:
monkeypatch.setattr('foo', partial(foo, arg2= 3))
但我得到了类型错误:foo()得到了关键字参数“arg2”的多个值
知道如何解决这个问题吗?您可以简单地将函数别名为:
foo(1, 2)
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo
您可以简单地将函数别名为:
foo(1, 2)
old_foo = monkeypatch.foo
def foo(arg1, arg2):
return old_foo(arg1, 3)
monkeypatch.foo = foo
您似乎在间接测试foo,并且试图修改对foo的调用。请编辑以显示:1<代码>def测试条,2。其中除了
def foo
之外,还调用了foo
(bar
可能?)。您可能应该直接测试foo,然后在bar
中使用依赖项注入。您似乎是在间接测试foo,并试图修改对foo的调用。请编辑以显示:1<代码>def测试条,2。其中除了def foo
之外,还调用了foo
(bar
可能?)。您可能应该直接测试foo,然后在bar
中使用依赖项注入。