2014-05-11 5 views
1

unittest.mock.create_autospec()에서 가져온 Mocks는 일부 함수에 대해 인수 검사를 수행하지 않는 것처럼 보입니다. 예를 들어, (나는 CPython 3.4.0를 사용) 다음 코드를 고려하십시오Python : mock.create_autospec()이 내장 함수에 대한 인수 검사를 수행하지 않습니다.

import os 
from unittest.mock import create_autospec 

def os_chdir(dir): # The same signature as os.chdir(). 
    pass 

m1 = create_autospec(os_chdir) 
m1('first', 'second') # Raises TypeError: too many positional arguments. 

m2 = create_autospec(os.chdir) 
m2('first', 'second') # Passes without an exception... 

m1 제대로 인수 수를 확인하지만 m2하지 않는 이유는 무엇입니까? 동일한 상황은 대화식 세션에서 인쇄 할 때 자신을 built-in function으로 식별하는 다른 기능입니다. documentation에는 그런 상황이 언급되어 있지 않습니다. 내가 찾은 것과

답변

0

는 대답은 아마 다음에있다 :

입니다
import inspect 

print(inspect.getfullargspec(os_chdir)) 
# Prints FullArgSpec(args=['dir'], varargs=None, varkw=None, defaults=None, 
#     kwonlyargs=[], kwonlydefaults=None, annotations={}) 

print(inspect.getfullargspec(os.chdir)) 
# Raises ValueError: no signature found for builtin <built-in function chdir> 

, unittest.mock.create_autospec()는 내장 함수에 대한 서명을 찾는 방법이 없습니다.

관련 문제