2012-11-28 4 views

답변

3

this link에 유사한 질문이 있습니다. 그러나 짧은 대답 : 외부 요소에서 내부 함수에 액세스 할 수 없습니다.

테스트 목적으로, 개인용 외부 함수의 내부 함수를 변경하는 것이 대안 일 수 있습니까?

5

할 수 없으므로하지 마십시오.

단위 테스트를 외부 함수로 제한하거나 내부 함수를 다른 곳으로 이동해야합니다.

1

나는 의심의 여지가 있었고 내부 기능에 대한 테스트를 수행하는 방법을 발견했습니다.

def outer(): 
    def inner(): 
     pass 

    if __debug__: 
     test_inner(inner) 
     # return 

def test_inner(f): 
    f() # this calls the inner function 

outer() 

기본적으로 내부 함수를 매개 변수로 보내고 원하는대로 테스트 할 수 있습니다. outer()를 호출하면 테스트가 실행되고 클로저이기 때문에 외부 함수 (변수와 같은)의 추가 속성을 보존합니다. 목록을 사용하여 원하는만큼 많은 기능을 보낼 수 있습니다. 경우을 무시하려면 옵션이 그런 식으로 코드를 실행하는 것입니다

python -O code.py 
+0

이것은 매우 특별한 경우의 해결책입니다. 루프 내의 중첩 된 함수를 고려하여 외부 함수의 로컬 변수에 액세스합니다 (중첩 함수의 일반적인 사용 예, IMHO). – Alfe

관련 문제