2017-12-08 22 views
0

몇 가지 테스트를하고 있는데 하나의 함수 인수를 모의하고 싶습니다. 그 함수의pytest에서 키워드 인수 바꾸기

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

과 전화 :

foo(1, 2) 

내가 3 대신 2의를 사용하여 어떻게 든 그것을 monkeypatch하고 싶다고 수 있나요 예를 들어

내가 좋아하는 기능을 가지고?

이 같은 시도 :

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

을하지만 형식 오류가 발생했습니다 : 키워드 인수 'ARG2'

모든 아이디어에 대한 여러 값을 가지고() foo는 어떻게이 문제를 해결하기 위해?

+0

그것은 당신이 간접적으로 foo는 테스트, 당신은 foo는 호출을 수정하려고하는 것 같다. 1. def test_bar'를 보여 주도록 편집하십시오 2. 'def foo' 외에도'foo'가 호출되는 곳 ('bar' 아마도?). 아마도 foo를 직접 테스트 한 다음'bar'에 의존성 주입을 사용해야합니다. – Zak

답변

1

할 수 있습니다 단순히 기능 별칭 :

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

monkeypatch.foo = foo 
+0

와우, OFC, 너무 간단 .... 잠을 좀 주셔서 감사합니다. – PapeK24