2017-10-06 2 views
0

다른 함수에서 선언 한 변수를 사용하는 함수를 단위 테스트하고 있습니다.다른 함수에서 선언 된 Python 조롱 글로벌 변수

def first_fun(): 
    global file_path 
    file_path = get_file_path() 
    . 
    . 

def second_fun(): 
    with open(file_path, "r") as flz: 
    . 
    . 

second_fun()을 테스트하는 동안 file_path를 조롱하려면 어떻게해야합니까? 시도했지만 작동하지 않습니다. 나는 점점 계속

@patch.object(source_module, 'file_path') 
    def test_second_fun(self): 
      source_module.second_fun() 

... 고려해야 할 속성 'FILE_PATH'

+1

가장 좋은 해결책은'global'을 사용하지 않는 것입니다. 이것은 많은 개발자들에 의해 반 패턴으로 보여집니다. –

답변

0

두 가지가 없습니다 :

첫째 :

명시 더 나은입니다 암시적인 것보다

이 경우

이 있으면 file_path가 함수 매개 변수 여야합니다. 둘째

: 당신이 외부 ressource에 의존하지해야하기 때문에 단위 테스트 할 수있는 테스트에 대한, 당신은, open()이 아닌 경로를 패치해야합니다.