2014-09-17 3 views
0

그래서 내가 단위 테스트에 새로운 오전 잘못 입력 등록하고 나는 모의 입력 'yes'으로 읽고 내가 왜 같이 입력을 조롱 할 때 여기에 'no'

가 왜 잘 모르겠어요 알아 내려고 노력하고 있어요 내 실행 코드.파이썬 유닛 테스트 모의 입력

def main(): 

    newGame = input("") 

    if newGame == "yes" or "y": 
     print("TEST1") 
    elif newGame == "no" or "n": 
     print("TEST2") 
    else: 
     print("TEST3") 

미친듯한 것은 아닙니다. 여기에 내 테스트 코드가있다.

import unittest 
from unittest.mock import patch 
import io 
import sys 

from RunFile import main 

class GetInputTest(unittest.TestCase): 

    @patch('builtins.input', return_value="no") 
    def test_output(self,m): 
     saved_stdout = sys.stdout 
     try: 
      out = io.StringIO() 
      sys.stdout = out 
      main() 
      output = out.getvalue().strip() 
      self.assertEqual("TEST2",output) 
     finally: 
      sys.stdout = saved_stdout 


if __name__ == "__main__": 
    unittest.main() 

또한 여기에 추적이 있습니다.

====================================================================== 
FAIL: test_output (__main__.GetInputTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "C:\Python33\lib\unittest\mock.py", line 1087, in patched 
    return func(*args, **keywargs) 
    File "C:/Users/jsalce/Documents/Testsuites/IfStatements/Testsuite.py", line 18, in test_output 
    self.assertEqual("TEST",output) 
AssertionError: 'TEST2' != 'TEST1' 
- TEST2 
+ TEST1 
?  + 

내가 입력을 "아니오"로 설정하기 전에 언급 한 것과 같이 나는 무슨 일이 벌어지고 있는지 모릅니다.

미리 감사드립니다.

답변

0

패치가 실제로 잘 작동하고 있습니다. if 문을 사용하여 실수를 한 것입니다. 더 간결과 같이 쓸 수있다

def main(): 

    newGame = input("") 

    if newGame == "yes" or newGame == "y": 
     print("TEST1") 
    elif newGame == "no" or newGame == "n": 
     print("TEST2") 
    else: 
     print("TEST3") 

:

def main(): 
    newGame = input("") 

    if newGame in ["yes", "y"]: 
     print("TEST1") 
    elif newGame in ["no", "n"]: 
     print("TEST2") 
    else: 
     print("TEST3") 

문이 if (newGame == "yes") or "y":으로 평가되고 현재 경우 당신은 정말이 원하는. bool("y")True이므로 if 문은 항상 True으로 바뀌므로 "TEST1"이 인쇄됩니다.

+0

감사합니다. – SalceCodec

관련 문제