다음 예제에서 중첩 함수 f1()을 어떻게 단위 테스트합니까?Python : 중첩 된 함수를 단위 테스트하는 방법은 무엇입니까?
def f():
def f1():
return 1
return 2
테스트가 필요한 함수는 중첩되지 않아야합니까?
다음 예제에서 중첩 함수 f1()을 어떻게 단위 테스트합니까?Python : 중첩 된 함수를 단위 테스트하는 방법은 무엇입니까?
def f():
def f1():
return 1
return 2
테스트가 필요한 함수는 중첩되지 않아야합니까?
this link에 유사한 질문이 있습니다. 그러나 짧은 대답 : 외부 요소에서 내부 함수에 액세스 할 수 없습니다.
테스트 목적으로, 개인용 외부 함수의 내부 함수를 변경하는 것이 대안 일 수 있습니까?
할 수 없으므로하지 마십시오.
단위 테스트를 외부 함수로 제한하거나 내부 함수를 다른 곳으로 이동해야합니다.
나는 의심의 여지가 있었고 내부 기능에 대한 테스트를 수행하는 방법을 발견했습니다.
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
이것은 매우 특별한 경우의 해결책입니다. 루프 내의 중첩 된 함수를 고려하여 외부 함수의 로컬 변수에 액세스합니다 (중첩 함수의 일반적인 사용 예, IMHO). – Alfe
@alemangui : 감사합니다! 그건 내 질문에 대한 답변. – e1i45
답변으로 달아 드리겠습니다. – alemangui