代码之家  ›  专栏  ›  技术社区  ›  PapeK24

替换pytest中的关键字参数

  •  0
  • PapeK24  · 技术社区  · 7 年前

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

    例如,我得到如下函数:

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

    并调用该函数:

    foo(1, 2)
    

    我想用3而不是2来修补它。这可能吗?

    尝试了以下操作:

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

    但我得到了类型错误:foo()为关键字参数“arg2”得到了多个值

    有没有办法解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  2
  •   rdb    7 年前

    您只需将函数别名为:

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