Тестирование
функции
223
эту функцию. Программа
names .py
запрашивает у пользователя имя и фамилию
и выдает отформатированное полное имя:
names.py
from name_function import get_formatted_name
print("Enter 'q' at any time to quit.")
while True:
first = input("\nPlease give me a first name: ")
if first == 'q':
break
last = input("Please give me a last name: ")
if last == 'q':
break
formatted_name = get_formatted_name(first, last)
print(f"\tNeatly formatted name: {formatted_name}.")
Программа импортирует функцию
get_formatted_name()
из модуля
name_function .
py
. Пользователь вводит последовательность имен и фамилий и видит, что про-
грамма сгенерировала отформатированные полные имена:
Enter 'q' at any time to quit.
Please give me a first name:
janis
Please give me a last name:
joplin
Neatly formatted name: Janis Joplin.
Please give me a first name:
bob
Please give me a last name:
dylan
Neatly formatted name: Bob Dylan.
Please give me a first name:
q
Как видно из листинга, имена сгенерированы правильно. Но допустим, вы решили
изменить функцию
get_formatted_name()
, чтобы она также работала со вторыми
именами. При этом необходимо проследить за тем, чтобы функция не перестала
правильно работать для имен, состоящих только из имени и фамилии. Чтобы про-
тестировать код, можно запустить
names .py
и для проверки вводить имя из двух
компонентов (скажем,
Janis
Joplin
) при каждом изменении
get_formatted_name()
,
но это довольно утомительно. К счастью, Python предоставляет эффективный
механизм автоматизации тестирования вывода функций. При автоматизации те-
стирования
get_formatted_name()
вы будете уверены в том, что функция успешно
работает
для всех видов имен, для которых написаны тесты.
Модульные
тесты и тестовые сценарии
Модуль
unittest
из стандартной библиотеки Python предоставляет функциональ-
ность для тестирования вашего кода.
Модульный тест
проверяет правильность ра-