2014-10-28 7 views
1

아래 함수는 사용자로부터 암호를받습니다. Unit testing/(mocks)을 사용하여 이것을 테스트해야합니다. 내가 파이썬에 새로운 오전사용자로부터 입력을받는 함수 테스트 (파이썬)

def create_auth(): 
    username = '{user}'.format(user=getpass.getuser()) 
    pwd = getpass.getpass() 
    auth_string = '{username}:{pwd}'.format(username=username, pwd=pwd) 
    return auth_string 

이 어떤 힌트가 도움이

감사

답변

2

의 출처를 핵심 로직, 사용자 입력 별개 :

class TestCreateAuth(unittest.TestCase): 
    @mock.patch('getpass.getpass') 
    @mock.patch('getpass.getuser') 
    def test_create_auth(self, getuser, getpw): 
     getuser.return_value = 'user' 
     getpw.return_value = 'pass' 
     self.assertEqual(create_auth(), 'user:pass') 
+0

감사합니다. 도움이되었습니다. – Ksc

4
는 일반적으로, 프로그램 로직에서 별도의 사용자 입력하는 것이 바람직의 말

- 그것은 장기적으로 코드를 더욱 유지 보수한다 . 이런 식으로

def create_auth(username, pwd): 
    auth_string = '{username}:{pwd}'.format(username=username, pwd=pwd) 
    return auth_string 

, 당신은 고정 데이터를 테스트 할 수 있습니다, 당신은 쉽게 전환 할 수 있도록 입력이 mock.patch을 사용하여 미래

관련 문제