[python] doctest를 사용하여 대화식 프롬프트를 테스트하는 방법은?
doctest
를 사용하여 대화식 프롬프트를 테스트하는 방법은 다음과 같습니다:
- 테스트할 함수 또는 모듈 파일을 준비합니다. 예를 들어, 다음과 같이
my_prompt.py
파일에 대화식 프롬프트 함수를 작성합니다:
def my_prompt():
while True:
user_input = input('Please enter a number (0 to quit): ')
if user_input == '0':
print('Exiting...')
break
else:
try:
number = int(user_input)
print(f'Square of {number} is {number**2}')
except ValueError:
print('Invalid input. Please enter a valid number.')
doctest
모듈을 임포트합니다:
import doctest
my_prompt
함수에 대한 테스트 케이스를 작성합니다. 함수의 예제 코드와 기대 출력으로 이루어진 문자열을 작성합니다. 문자열 앞에>>>
를 붙여 함수 호출을 나타내고, 그 다음 줄에 예상되는 출력을 적습니다. 예제 코드와 기대 출력은 여러 줄에 걸쳐 작성할 수 있습니다. 예를 들어:
test_cases = """
>>> my_prompt()
Please enter a number (0 to quit): 5
Square of 5 is 25
Please enter a number (0 to quit): abc
Invalid input. Please enter a valid number.
Please enter a number (0 to quit): 0
Exiting...
"""
doctest.testmod()
함수를 사용하여 테스트를 실행합니다.testmod()
함수는doctest
모듈 내부에 있는 모든 테스트를 찾아 실행하고, 결과를 출력합니다:
doctest.testmod()
전체 코드는 다음과 같습니다:
import doctest
def my_prompt():
while True:
user_input = input('Please enter a number (0 to quit): ')
if user_input == '0':
print('Exiting...')
break
else:
try:
number = int(user_input)
print(f'Square of {number} is {number**2}')
except ValueError:
print('Invalid input. Please enter a valid number.')
test_cases = """
>>> my_prompt()
Please enter a number (0 to quit): 5
Square of 5 is 25
Please enter a number (0 to quit): abc
Invalid input. Please enter a valid number.
Please enter a number (0 to quit): 0
Exiting...
"""
doctest.testmod()
doctest
를 사용하여 대화식 프롬프트를 테스트함으로써, 함수가 예상대로 동작하는지 확인할 수 있습니다. 테스트 케이스를 작성할 때 주의할 점은 사용자 입력을 시뮬레이션해야 한다는 것입니다. 이를 위해 input()
함수를 사용하여 사용자 입력을 받을 수 있습니다.